Python:如何在列表中找到与元素名称部分匹配的元素
我要从文件名列表中查找关键字列表。例如,如果关键字是Python:如何在列表中找到与元素名称部分匹配的元素,python,list,csv,Python,List,Csv,我要从文件名列表中查找关键字列表。例如,如果关键字是'U12',我想找到包含'U12'的csv文件,即'h_ABC_U12.csv',并将其打印出来 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: #pri
'U12'
,我想找到包含'U12'
的csv文件,即'h_ABC_U12.csv'
,并将其打印出来
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
这是代码的一部分,但在某些搜索后无法继续。
我需要与单词匹配的全名打印出来。当然可以
for x in range(len(word)):
for file in file_list:
if x in file:
print file
你愿意做这项工作吗?试试这个-
for w in word:
for file in file_list:
if w in file:
print file
这应该表现得更好:
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)]
您可以尝试使用列表理解:
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]
我建议使用
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
结果
U12 h_ABC_U12.csv
U13 h_GGG_U13.csv
U14 h_HVD_U14.csv
U12 h_ABC_U12.csv
U13 h_GGG_U13.csv
U14 h_HVD_U14.csv