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