繁体   English   中英

Python CSV-从两个字典编写

[英]Python CSV - Writing from Two Dictionaries

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

输入文件的示例:

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

要么

1.11    1
1.11    3
1.11    5

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM