python中一共有多少个关键字-python – 搜索多个关键字的字符串列表

我有两个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

你可能感兴趣的:(python中一共有多少个关键字-python – 搜索多个关键字的字符串列表)