1

私の質問はこれに似ていますが、たとえば、、、などの複数の出現箇所を検索し、指定されたすべての文字が存在する行を出力する点が異なります。charsgde

私は以下を試しましたが、うまくいきませんでした:

searchfile = open("myFile.txt", "r")
for line in searchfile:
    if ('g' and 'd') in line: print line,
searchfile.close()

上記のコードを実行した結果のように、「g」または「d」、あるいはその両方が含まれる行を取得していました。必要なのは、両方のオカレンスであり、少なくとも1つではありません。

4

3 に答える 3

4
if set('gd').issubset(line)

これには、各チェックがc in line行全体を繰り返すため、2回実行されないという利点があります。

于 2013-03-23T23:17:01.847 に答える
2

この行:

if ('g' and 'd') in line: 

と同じです

if 'd' in line:

なぜなら

>>> 'g' and 'd'
'd'

あなたが欲しい

if 'g' in line and 'd' in line:

または、より良い:

if all(char in line for char in 'gde'):

(集合交差を使用することもできますが、それはあまり一般化できません。)

于 2013-03-23T22:25:44.420 に答える
0

パターンマッチングに関しては、正規表現は確かに役立ちますが、検索はこれよりも簡単なようです。次のことを試してください。

# in_data, an array of all lines to be queried (i.e. reading a file)
in_data = [line1, line2, line3, line4]

# search each line, and return the lines which contain all your search terms
for line in in_data:
    if ('g' in line) and ('d' in line) and ('e' in line):
        print(line)

この単純なものが機能するはずです。私はここでいくつかの仮定をしています:1。検索語の順序は重要ではありません2.大文字/小文字は扱われません3.検索語の頻度は考慮されません。

それが役に立てば幸い。

于 2013-03-23T22:16:00.427 に答える