36

テキスト ファイルから約 2,000 万行を解析しようとしていますが、疑問符で始まらない行をさらに操作する方法を探しています。正規表現マッチングを使用しないソリューションが必要です。私がやりたいことは次のようなものです:

for line in x:
    header = line.startswith('?')
if line.startswith() != header:
        DO SOME STUFF HERE

メソッドが 1 つの引数を取ることは理解していstartswithますが、疑問符で始まらない行からすべての行を取得する簡単な解決策はありますか? 助けてくれてありがとう。

4

4 に答える 4

69

私が考える最良の方法は、ジェネレーター式を使用することです。

for line in (line for line in x if not line.startswith('?')):
    DO_STUFF

またはあなたの方法:

for line in x:
    if line.startswith("?"):
        continue
    DO_STUFF

または:

for line in x:
    if not line.startswith("?"):
        DO_STUFF

それは本当にあなたのプログラミングスタイル次第です。私は前者の方が好きですが、後者の方が簡単かもしれません。でも3つ目はインデントが多いのであんまり好きじゃないです。

于 2011-07-20T14:19:48.043 に答える
2

このようなものはおそらくあなたが求めているものです:

with open('myfile.txt') as fh:
  for line in fh:
    if line[0] != '?': # strings can be accessed like lists - they're immutable sequences.
      continue
    # All of the processing here when lines don't start with question marks.
于 2011-07-20T14:20:23.797 に答える
0

utdemirの答えに似ています:

from itertools import ifilterfalse  # just "filterfalse" if using Python 3

for line in ifilterfalse(lambda s: s.startswith('?'), lines):
    # DO STUFF

http://docs.python.org/library/itertools.html#itertools.ifilterfalse
http://docs.python.org/dev/py3k/library/itertools.html#itertools.filterfalse

于 2011-07-20T14:29:34.677 に答える