簡體   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