gpt4 book ai didi

python - 在字符串列表中搜索多个关键字

转载 作者:太空狗 更新时间:2023-10-30 02:43:51 26 4
gpt4 key购买 nike

我有两个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-else而不是 if-else :

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 block 匹配 for,而不是 if。另请注意,如果您想避免执行 for-else,则 if 必须以 break 结尾。

关于python - 在字符串列表中搜索多个关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31863285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com