我有两个python列表,一个是关键字列表,另一个是文件名列表.我需要根据我拥有的关键字解析文件名列表.我希望python将文件名与关键字匹配,然后根据匹配的关键字执行操作.
我看起来像这样:
keywords = ["_CMD_","_COMM_","_RETRANSMIT_"]
file_list = ['2B_CMD_2015.txt','2C_CMD_2015.txt','RETRANSMIT_2015.txt']
for f_name in file_list:
for keyword in keywords:
if keyword in f_name:
#perform operation based on what keyword is matched
else:
#print an error
我遇到的问题是,因为它遍历关键字,所以它会输出错误,直到它找到文件名中的关键字,然后执行操作,但我只希望它打印错误,如果没有关键字在它正在搜索的文件名中找到.
我尝试使用any(),但似乎在找到匹配后停止检查文件.例如,使用
for keyword in keywords:
if any(keyword in f_name for f_name in file_list):
print f_name
print keyword
返回
2B_CMD_2015.txt
_CMD_
2B_CMD_2015.txt
_RETRANSMIT_
哪个不对.
编辑
也尝试使用正则表达式,但不知道我是否正确的方式:
for keyword in keywords:
for item in wordlist:
if re.search(keyword,item) is not None:
print keyword
print item
else:
print "nope"
返回:
nope
nope
nope
_CMD_
2B_CMD_2015.txt
_CMD_
2C_CMD_2015.txt
nope
nope
nope
_RETRANSMIT_
_RETRANSMIT_2015.txt
nope
nope
nope
任何人都可以帮我解决这个问题吗?我觉得不应该这么困难.
解决方法:
for f_name in file_list:
for keyword in keywords:
if keyword in f_name:
print "Found keyword %s in name %s"%(keyword, f_name)
break
else:
print "Found no keyword"
注意缩进级别. else块匹配for,而不是if.另请注意,如果要避免执行for-else,则if必须以break结尾.
标签:python
来源: https://codeday.me/bug/20190609/1203674.html