从两个字典写Python CSV

2024-04-26 14:48:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个脚本,它将编写一个CSV文件,其中包含来自两个独立输入文件的列。我在尝试在两个输入文件上使用csv.Dictreader()时遇到了一个问题,这样就可以方便地引用要写入的文件中的列。使用print,两个字典中的键似乎都被正确地理解了,但是只有一个字典中的信息(在脚本中放在第一位)被正确地写入,而第二个字典只会写入每行中的第一个值。你知道吗

输入文件示例:

文件1.csv

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

文件2.txt

1.11
2.22
3.33

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

你知道吗输出.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

或者

1.11    1
1.11    3
1.11    5

取决于我是把for DataOne in DictOne还是for DataTwo in DictTwo放在第一位。我查看了关于CSV字典使用的其他讨论,但没有发现其他人有这个问题。两个字典中的键都能被识别,但只有一个是正确编写的。是否可以使用这两个词典编写输出文件?你知道吗

我知道只打开CSV文件并将列复制/粘贴到新文档通常比较容易,但我需要在许多文件上重复此过程,并将其作为批处理的一部分。你知道吗


Tags: 文件csvintxt脚本for字典as
1条回答
网友
1楼 · 发布于 2024-04-26 14:48:30

如果您不想在这里使用嵌套循环,请尝试改用zip()

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

相关问题 更多 >