python使用列表理解从CSV读取特定行

duc*_*cin 0 python file-io list-comprehension

是否可以让python只从文件中读取选定的行?

比方说,我有一个CSV文件,文件被分开tab第三列要么是“A”,“B”或“C”。我想要一个列表理解(或生成器,无关紧要)它只会返回文件中选择第一列的那些行

下面抛出一个语法错误:

lines = [tmp = line.rstrip().split(separator_column) for line in source if tmp[2] == 'a']
Run Code Online (Sandbox Code Playgroud)

是否有可能以比 for 循环更 Pythonic 的方式来完成?所谓的更多 Pythonic 方法正在以 C 的速度工作——它们比基本的 Python 指令更快——这就是我问的原因。

bru*_*ers 5

使用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']
Run Code Online (Sandbox Code Playgroud)