python使用list comprehension从CSV读取特定行

时间:2013-10-07 12:16:28

标签: python file-io list-comprehension

是否可以从文件中选择只读选定的行?

假设我有一个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指令更快 - 这就是我问的原因。

1 个答案:

答案 0 :(得分: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']