2017-05-23 15 views
1

ファイル名のリストから検索するキーワードのリストがあります。たとえば、キーワードが'U12'の場合、'U12'が含まれているCSVファイルが'h_ABC_U12.csv'であることを確認したいと思います。Python:要素の名前の一部と一致するリスト内の要素を見つける方法

word = ['U12','U13','U14'] 
file_list = ['h_ABC_U12.csv','h_GGG_U13.csv','h_HVD_U14.csv','h_MMMB_U15.csv'] 

for x in range (len(word)): 
    if word[x] in file_list: 
     #print the file name 

これはコードの一部ですが、一部の検索後も続行できません。 印刷する単語に一致する完全な名前が必要です。

答えて

1

拡張子なしでファイル名を取得するには、os.path.splitextを使用することをおすすめします。

>>> from os.path import splitext 
>>> for f in file_list: 
...  name = splitext(f)[0] 
...  if any(name.endswith(tail) for tail in word): 
...   print(name) 
... 
h_ABC_U12 
h_GGG_U13 
h_HVD_U14 
0

きっと

for x in range(len(word)): 
    for file in file_list: 
     if x in file: 
      print file 

は、仕事をするだろうか?

1

これを試してみてください -

for w in word: 
    for file in file_list: 
     if w in file: 
      print file 
0

これは、より良い実行する必要があります。

for file_name in file_list: 
    the_word = next((w for w in word if w in file_name), None) 
    if the_word: 
     print the_word 
     print file_name 

またはすべてのファイル名のリストを取得するには:

[file_name for file_name in file_list if next((w for w in word if w in file_name), None)] 
1

あなたは、この使用してリストの理解を試すことができます:

word = ['U12','U13','U14'] 
file_list =['h_ABC_U12.csv','h_GGG_U13.csv','h_HVD_U14.csv','h_MMMB_U15.csv'] 

print [i for i in file_list for b in word if b in i] 
0
word = ['U12','U13','U14'] 
file_list = ['h_ABC_U12.csv','h_GGG_U13.csv','h_HVD_U14.csv','h_MMMB_U15.csv'] 

for file_name in file_list: 
    for w in word: 
    if w in file_name: 
     print(w,file_name) 

RESULT

U12 h_ABC_U12.csv 
U13 h_GGG_U13.csv 
U14 h_HVD_U14.csv 
関連する問題