Problème lors de l'exécution d'une liste contenant des chaînes d'une liste : retour avec une mauvaise listeJe souhaite obtenir une liste de fichiers contenant str à partir d'une autre liste, mais le retour est vide. Qu'ai-je fait de mal? Quelqu'un peut-il conseiller ? Ci-dessous mon script.
filelist = Files In Directory( path );
//filelist={"123_123_1_acdr.csv", "234_113_100_rqtfgy.csv", "53_1243_12_qqwed.csv", "6_12378_23_rty.csv"}
lst1 = {"234_113_100", "53_1243_12"};
lst2 = {};
For( i = 1, i <= N Items( filelist ), i++,
If( Contains( lst1, filelist[i] ),
Insert Into( lst2, filelist[i] )
)
);
Print( lst2 );
la sortie attendue de lst2 ={"234_113_100_rqtfgy.csv", "53_1243_12_qqwed.csv"} cependant, la sortie lst2 est vide.
Automatisation et scriptsÉtudes de consommation et de marchéAccès aux donnéesIngénierie Qualité et ProcédésRe : Problème lors de l'exécution si une liste contient str d'une liste : retour avec une mauvaise listeMerci Svarga et Jim. Maintenant je comprends le problème.Re : Problème lors de l'exécution si une liste contient str d'une liste : retour avec une mauvaise listeUn petit conseil, j'aime tester les scripts dans l'Index des scripts. Je suis allé à l'exemple Files In Directory et j'ai remplacé vos valeurs. Si vous voulez n'avoir qu'une seule boucle for, vous devrez vous assurer que votre lst1 a la correspondance exacte. Mais pour cet exemple, vous avez besoin d'une boucle for imbriquée. Vous devez également changer les arguments Contient de lst1, filelist[i] à filelist[i], lst[j].
filelist = {"123_123_1_acdr.csv", "234_113_100_rqtfgy.csv",
"53_1243_12_qqwed.csv", "6_12378_23_rty.csv"};
lst1 = {"234_113_100"};
lst2 = {};
For( i = 1, i <= N Items( filelist ), i++,
For(j = 1, j <= N Items(lst1), j++,
If( Contains( filelist[i], lst1[j] ),
Insert Into( lst2, filelist[i] )
)
)
);
Print( lst2 );<BR /><BR />Result: {"234_113_100_rqtfgy.csv"}
Re : Problème lors de l'exécution si une liste contient str d'une liste : retour avec une mauvaise listesi un contient est utilisé pour rechercher dans une liste, il ne recherchera que les correspondances complètes.En cherchant dans une chaîne, on peut vérifier les correspondances partielles.
//filelist = Files In Directory( path );
filelist = {"123_123_1_acdr.csv", "234_113_100_rqtfgy.csv", "53_1243_12_qqwed.csv",
"6_12378_23_rty.csv"};
lst1 = {"234_113_100", "53_1243_12"};
lst2 = {};
For( i = 1, i <= N Items( filelist ), i++,
For( k = 1, k <= N Items( lst1 ), k++,
If( Contains( filelist[i], lst1[k] ),
Insert Into( lst2, filelist[i] )
)
)
);
Print( lst2 );