2011-10-29 603 views
1

我正在尋找列表中的特定字符串;此字符串是較長字符串的一部分。Python:找出列表中的元素是否具有特定的字符串

基本上我循環槽文本文件,並添加每個字符串列表中的不同元素。現在我的目標是掃描整個列表以查明是否有任何元素字符串包含特定的字符串。源文件的

例如:

asfasdasdasd 
asdasdasdasdasd mystring asdasdasdasd 
asdasdasdasdasdasdadasdasdasdas 

現在,假設每個3串的是在列表中的一個元素;並且您想知道列表中是否有任何元素(我不需要知道它在哪裏,或列表中出現了多少個字符串)中的字符串「我的字符串」。我試着用這個來得到它,但它似乎找不到任何發生

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) 

輸出將只是列表和布爾has_string停留假

我缺少的東西,或正在使用中聲明以錯誤的方式?

+0

的條件應該是,如果「MyString的」在項目 – Kamal

回答

5

你希望它是:

if "mystring" in item: 
+0

DOH ......這就是爲什麼它不工作,謝謝! – user1006198

5

一個簡潔的(通常更快)的方式來做到這一點:

if any("my string" in item for item in work_list): 
    has_string = True 
    print "found mystring" 

但真的是你要做的就是實現grep

3

方法1

[s for s in stringList if ("my string" in s)] 
#  --> ["blah my string blah", "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"] 
相關問題