2013-10-07 69 views
0

是否可以讓python只讀取文件中選定的行?Python使用列表理解從CSV讀取特定行

比方說,我有一個CSV文件,文件是由tab分離,第三欄要麼是「A」,「B」或「C」。我想有一個列表理解(或發電機,無所謂),這將第一列

下拋出一個語法錯誤,那些選擇在文件中只返回線路:

lines = [tmp = line.rstrip().split(separator_column) for line in source if tmp[2] == 'a'] 

是否有可能以一種更爲pythonic的方式來做,而不僅僅是一個for-loop?所謂的更多pythonic方式正在與C的速度 - 他們比基本的Python指令更快 - 這就是爲什麼我問。

+0

我要說的Python化的方法是使用一個for循環。顯而易見的。 – YXD

回答

4

使用csv模塊:

import csv 
with open("your/file.csv", ...) as source: 
    reader = csv.reader(source, delimiter='\t') 
    selection = [row for row in reader if row[2] == 'a']