**注意 - 我不会只是在字符串的末尾进行测试 - 需要在字符串中的任何位置找到特定的子字符串
检查以确保字符串不包含多个值的最快方法是什么。我目前的方法是效率低下并且是unpythonic:
if string.find('png') ==-1 and sring.find('jpg') ==-1 and string.find('gif') == -1 and string.find('YouTube') == -1:
答案 0 :(得分:14)
尝试:
if not any(extension in string for extension in ('jpg', 'png', 'gif')):
与您的代码基本相同,但写得更优雅。
答案 1 :(得分:6)
如果您只测试字符串的结尾,请记住str.endswith可以接受元组。
>>> "test.png".endswith(('jpg', 'png', 'gif'))
True
否则:
>>> import re
>>> re.compile('jpg|png|gif').search('testpng.txt')
<_sre.SRE_Match object at 0xb74a46e8>
>>> re.compile('jpg|png|gif').search('testpg.txt')
答案 2 :(得分:-4)
如果要测试的值不需要由元组/列表管理,您也可以执行类似的操作。
>>> ('png' or 'jpg' or 'foo') in 'testpng.txt'
True
>>> ('png' or 'jpg' or 'foo') in 'testpg.txt'
False
EDIT 我现在看到了我的方式的错误,它只检查了第一个。
>>> ('bees' or 'png' or 'jpg' or 'foo') in 'testpng.txt'
False