[英]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.