2011-10-29 8 views
1

リスト内の特定の文字列を探しています。この文字列は長い文字列の一部です。Python:リスト内の要素に特定の文字列があるかどうか調べる

基本的には、テキストファイルをループして、各文字列をリストの別の要素に追加します。今私の目的は、リスト全体をスキャンして、要素文字列のいずれかに特定の文字列が含まれているかどうかを調べることです。ソース・ファイルの

例:

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) 

を見つけられないようだ、とブールhas_stringはFalseを

は、私が何かをしないのですか中を使用していますとどまります陳述が間違っている?

+0

項目 – Kamal

答えて

5

あなたはそれになりたい:

if "mystring" in item: 
+0

DOHで「のMyStringは」...それが理由だ場合、条件があるべきそれは動作していなかった、ありがとう! – 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"] 
関連する問題