2014-09-30 91 views
0

有時我只需要從文本文件中獲取包含特定字符串的行(例如,在解析日誌文件時)。我通常做這種方式:在Python中高效提取包含字符串的行

with open(TEXTFILENAME,'r') as f: 
    contents = f.readlines() 

targets = [s for s in contents if FINDSTRING in s] 

但是,我看到有一個可能的雙內膽:

with open(TEXTFILENAME,'r') as f: 
    targets = [s for s in f.readlines() if FINDSTRING in s] 

不知第二種方法更有效,是否readlines()功能在這種情況下的行爲作爲各種迭代器。

回答

2

避免呼叫readlines,它會生成所有行的列表。這應該因此更快

with open(TEXTFILENAME,'r') as f: 
    targets = [line for line in f if FINDSTRING in line] 
+0

謝謝!我知道我忽略了某些東西。「 – pepoluan 2014-09-30 04:56:51

相關問題