Python CSV - 从两个词典写作

时间:2013-10-29 23:29:18

标签: python csv dictionary

我正在尝试创建一个脚本,该脚本将编写一个包含两个独立输入文件列的CSV文件。我在尝试在两个输入文件上使用csv.Dictreader()时遇到问题,因此可以轻松引用要写入的文件中的列。使用print,似乎正确理解了两个字典中的键,但只有一个字典中的信息(曾经放在脚本中的第一个字段)正在被正确写入,而第二个字段只能写入第一个字典。每行的价值。

输入文件的示例:

file1.csv

A,B
1,2
3,4
5,6

FILE2.TXT

1.11
2.22
3.33

我想创建的输出文件,第一列是C,第二列是A:

output.csv

1.11     1
2.22     3
3.33     5

这是我到目前为止的代码:

import csv

with open('file1.csv', 'rb') as FileOne:
    with open('file2.txt', 'rb') as FileTwo
        with open('output.csv', 'wb') as OutFile:
            LabelsOne = ['A', 'B']
            LabelsTwo = ['C']
            inf.next()
            DictOne = csv.DictReader(FileOne, LabelsOne, skipinitialspace=True)
            DictTwo = csv.DictReader(FileTwo, LabelsTwo, skipinitialspace=False)
            outf = csv.writer(OutFile, delimiter='\t')

            for DataOne in DictOne:
                for DataTwo in DictTwo:
                    DataOne.update(DataTwo)
                    outf.writerow([DataOne['C'], DataOne['A']])

但是现在我得到的输出要么是

1.11     1
2.22     1
3.33     1

OR

1.11    1
1.11    3
1.11    5

取决于我是先放for DataOne in DictOne还是for DataTwo in DictTwo。我已经查看了有关使用CSV词典的其他讨论,但没有找到其他人使用此问题。两个词典中的键都被明确地识别出来,但只有一个被正确写入。是否可以使用两个字典来编写输出文件?

我知道打开CSV文件并将列复制/粘贴到新文档通常会更容易,但我需要此过程重复多个文件并作为批处理的一部分。

1 个答案:

答案 0 :(得分:1)

您根本不需要嵌套循环,请尝试使用zip()

            for DataOne, DataTwo in zip(DictOne, DictTwo):
                DataOne.update(DataTwo)
                outf.writerow([DataOne['C'], DataTwo['A']])