我正在尝试创建一个脚本,它将编写一个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文件并将列复制/粘贴到新文档通常比较容易,但我需要在许多文件上重复此过程,并将其作为批处理的一部分。你知道吗
如果您不想在这里使用嵌套循环,请尝试改用
zip()
:相关问题 更多 >
编程相关推荐