1

誰かが私を助けてくれないかと思っていました。私はPythonの初心者です。私がやりたいことは、任意の文字を入力することです。プログラムは、オブジェクトのリストを含むテキスト ファイルで文字を検索する必要があります。すべての文字を含むオブジェクトを特定の順序で印刷する必要はありません。たとえば、次の 5 つの単語を含むテキスト ファイルがあります。

yellow
morning
sea
soiberg
sand

文字 を含むすべての単語を表示するプログラムが必要です"goi"

結果:

morning
soiberg

現時点で私が持っているのはこれです:

with open('d:\lista.txt', 'r') as inF:
   l = input("Buscar: ")
   for line in inF:
       if l[0] in line:
          if l[1] in line:
              if l[2] in line:
                 print(line)

しかし、2 文字または 5 または 7 だけを見つけたい場合はどうすればよいかわかりません。

4

3 に答える 3

2

使用できますall()

with open(r'd:\lista.txt', 'r') as inF:
    l = input("Buscar: ")
    for line in inF:
        if all(c in line for c in l)
          #code

例:

>>> strs = "goi"
>>> line = "morning"
>>> all(c in line for c in strs)
True
>>> line = "soiberg"
>>> all(c in line for c in strs)
True
>>> line = "sea"
>>> all(c in line for c in strs)
False

Windows ファイル パスには生の文字列を使用する必要があることに注意してください。そうしないと'\t'、ファイル パス内のようなものがタブ スペースに変換され、エラーが発生します。

r'd:\lista.txt'
于 2013-07-07T22:51:37.383 に答える
0

セットを使用して、一致する行でジェネレーターを構築し、それを反復処理します。

with open('input') as fin:
    letters = set(raw_input('Buscar: '))
    matches = (line for line in fin if not letters.difference(line.strip())
    for match in matches:
        # do something
于 2013-07-07T22:58:40.280 に答える
0

これは、単純なツールを使用する別の方法です。

with open(r'd:\lista.txt', 'r') as inF:
    l = input("Buscar: ")
    for line in inF:
        counter=0
        for letter in l:
            if letter in line:
                counter+=1
        if counter==len(l):
            print(line)
于 2013-07-07T23:18:01.940 に答える