我在列表中寻找特定的字符串;这个字符串是一个较长字符串的一部分。
基本上我循环通过文本文件并将每个字符串添加到列表的不同元素中。现在我的目标是扫描整个列表,以确定是否有任何元素字符串包含特定的字符串。
源文件的示例:
asfasdasdasd
asdasdasdasdasd mystring asdasdasdasd
asdasdasdasdasdasdadasdasdasdas
现在假设3个字符串中的每一个都在列表的元素中;并且你想知道列表中是否有任何元素中的字符串“my string”(我不需要知道它在哪里,或者列表中出现了多少字符串)。我试图用它来解决它,但似乎没有发现任何事件
work_list=["asfasdasdasd", "asdasdasdasd my string asdasdasdasd", "asdadadasdasdasdas"]
has_string=False
for item in work_list:
if "mystring" in work_list:
has_string=True
print "***Has string TRUE*****"
print " \n".join(work_list)
输出只是列表,bool has_string保持False
我是否遗漏了某些内容或以错误的方式使用了in语句?
答案 0 :(得分:5)
你希望它是:
if "mystring" in item:
答案 1 :(得分:5)
一种简洁(通常更快)的方法:
if any("my string" in item for item in work_list):
has_string = True
print "found mystring"
但实际上你所做的就是实施grep
。
答案 2 :(得分:3)
方法1
[s for s in stringList if ("my string" in s)]
# --> ["blah my string blah", "my string", ...]
这将产生包含“my string”的所有字符串的列表。
方法2
如果你只是想检查它是否存在某处,你可以更快地做到:
any(("my string" in s) for s in stringList)
# --> True|False
这有利于在第一次出现"my string"
时终止搜索。
方法3
你会想把它放在一个函数中,最好是一个懒惰的生成器:
def search(stringList, query):
for s in stringList:
if query in s:
yield s
list( search(["an apple", "a banana", "a cat"], "a ") )
# --> ["a banana", "a cat"]