2011-07-20 81 views
9

我想從文本文件解析大約2000萬行,並且正在尋找一種方法來對不以問號開頭的行進行一些進一步的操作。我想要一個不使用正則表達式匹配的解決方案。我想這樣做是這樣的:獲取所有不以字符開頭的字符串的最簡單方法是什麼?

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

我意識到startswith方法接受一個參數,但沒有任何簡單的解決方案,以獲得來自不帶問號開始行中的所有行?先謝謝您的幫助。

回答

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 

這是真的給你的編程風格。我更喜歡第一個,但第二個似乎更簡單。但是我因爲很多縮進而不太喜歡第三個。

+0

非常感謝您的幫助! – drbunsen

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

這裏是一個很好的一個內膽,這非常接近自然語言。

列定義:

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

代碼執行的契稅:

BetterStringList = [ p for p in StringList if not(p.startswith('__'))] 
相關問題