gpt4 book ai didi

搜索字符串的 Python 逻辑

转载 作者:太空宇宙 更新时间:2023-11-03 12:19:38 24 4
gpt4 key购买 nike

filtered=[]
text="any.pdf"
if "doc" and "pdf" and "xls" and "jpg" not in text:
filtered.append(text)
print(filtered)

这是我在 Stack Overflow 中的第一篇文章,所以如果问题中有令人讨厌的东西,请原谅,如果文本不包含以下任何单词,代码应该附加文本:doc、pdf、xls、jpg。如果它像这样,它工作正常:

if "doc" in text:
elif "jpg" in text:
elif "pdf" in text:
elif "xls" in text:
else:
filtered.append(text)

最佳答案

如果你打开一个 python 解释器,你会发现 "doc"and "pdf"and "xls"and "jpg"'jpg':

>>> "doc" and "pdf" and "xls" and "jpg"
'jpg'

因此,您的第一次尝试仅针对“jpg”进行测试,而不是针对所有字符串进行测试。

有很多方法可以做你想做的事。以下不是最明显的,但很有用:

if not any(test_string in text for test_string in ["doc", "pdf", "xls", "jpg"]):
filtered.append(text)

另一种方法是将 for 循环与 else 语句结合使用:

for test_string in ["doc", "pdf", "xls", "jpg"]:
if test_string in text:
break
else:
filtered.append(text)

最后,您可以使用纯列表理解:

tofilter = ["one.pdf", "two.txt", "three.jpg", "four.png"]
test_strings = ["doc", "pdf", "xls", "jpg"]
filtered = [s for s in tofilter if not any(t in s for t in test_strings)]

编辑:

如果你想同时过滤单词和扩展名,我会推荐以下内容:

text_list = generate_text_list() # or whatever you do to get a text sequence
extensions = ['.doc', '.pdf', '.xls', '.jpg']
words = ['some', 'words', 'to', 'filter']
text_list = [text for text in text_list if not text.endswith(tuple(extensions))]
text_list = [text for text in text_list if not any(word in text for word in words)]

这仍然会导致一些不匹配;上面还过滤了“做某事”、“他是个词匠”等。如果这是个问题,那么您可能需要更复杂的解决方案。

关于搜索字符串的 Python 逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5131977/

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