如何从列表解析中的单行中提取两个元组?

时间:2015-10-03 20:18:50

标签: python iterator list-comprehension

我正在尝试完成一个相当简单的任务:我正在读取一个csv文件,其中包含第0列中的ID和第2列和第3列中与该ID相关联的两个文本。我现在想要形成一个包含元组的列表(身份证,文字)。然而,不知何故,我无法将其纳入单一列表理解中。这就是我到目前为止所拥有的:

import csv

with open(filename) as csvfile:

    reader = csv.reader(csvfile, delimiter=';')
    next(reader)

    rows = [(row[0], row[2]) for row in reader]     
    rows.extend([(row[0], row[3]) for row in reader])

问题是extend不起作用,因为reader已经迭代过了......

关于如何在一个列表理解中做到这一点的任何建议?

1 个答案:

答案 0 :(得分:2)

您可以进行第二次迭代:

rows = [value for row in reader
        for value in [(row[0], row[2]), (row[0], row[3])]]