我試圖創建一個腳本,它將寫入一個包含來自兩個單獨輸入文件的列的CSV文件。我在嘗試在兩個輸入文件上使用csv.Dictreader()
時遇到問題,以便可以輕鬆引用要寫入的文件中的列。使用print
,似乎來自兩個字典的鍵都被正確理解,但只有來自一個Dictionary的信息(曾經放在腳本中的第一個)正在被正確寫入,而第二個將只寫入每行中的第一個值。Python CSV - 從兩個字典中寫入
輸入文件的一個例子:
file1.csv
A,B
1,2
3,4
5,6
FILE2.TXT
1.11
2.22
3.33
我想創建的OUTPUTFILE,用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字典的其他討論,但沒有發現任何其他人有此問題。從兩個字典的鍵defintiely被認可,但只有一個是正確寫入。是否可以使用兩個字典來編寫輸出文件?
我知道,它通常會更容易只是CSV文件和複製/粘貼列開拓一個新的文件,但我需要這個過程重複了許多文件和作爲批處理的一部分。
太感謝你了!這工作完美。 – Geogrammer