2011-07-20 4 views
9

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

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

私はstartswith方法を実現する1つの引数を取りますが、クエスチョンマークで始まらない行からすべての行を取得する任意の簡単な解決策はありますか?助けを前にありがとう。

答えて

21

ジェネレータ表現を使用すると、私が思う最良の方法です。

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 

それは本当にあなたのプログラミングスタイル次第です。私は最初の方が好きですが、おそらく2番目の方が簡単です。しかし、私は第三のものが本当に好きではない。このような

+0

の助けをありがとうございました! – drbunsen

2

何かがおそらくあなたがしているものの後:utdemirの答えと同様に

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. 
0

素敵なワンライナーであり、自然言語に非常に近い。

文字列の定義:行為を行い

StringList = [ '__one', '__two', 'three', 'four' ] 

コード:

BetterStringList = [ p for p in StringList if not(p.startswith('__'))] 
関連する問題