Python:如何在列表中找到与元素名称的一部分匹配的元素
Posted
技术标签:
【中文标题】Python:如何在列表中找到与元素名称的一部分匹配的元素【英文标题】:Python: how to find the element in a list which match part of the name of the element 【发布时间】:2017-10-23 13:04:38 【问题描述】:我有一个要从文件名列表中查找的关键字列表。例如,如果关键字是'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
这是代码的一部分,但经过一些搜索后无法继续。 我需要与单词匹配的全名才能打印出来。
【问题讨论】:
【参考方案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
【讨论】:
【参考方案2】:试试这个 -
for w in word:
for file in file_list:
if w in file:
print file
【讨论】:
【参考方案3】:您可以尝试使用列表推导:
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]
【讨论】:
【参考方案4】:确实
for x in range(len(word)):
for file in file_list:
if x in file:
print file
会做这项工作吗?
【讨论】:
【参考方案5】:这应该会更好:
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)]
【讨论】:
【参考方案6】: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)
结果
U12 h_ABC_U12.csv
U13 h_GGG_U13.csv
U14 h_HVD_U14.csv
【讨论】:
以上是关于Python:如何在列表中找到与元素名称的一部分匹配的元素的主要内容,如果未能解决你的问题,请参考以下文章
Python面试必考重点之列表,元组和字典第一关——如何定义集合/集合与列表有什么区别/如何去掉列表(元组)中重复的元素