簡體   English   中英

重新排序 csv 中的列,但使用字典

[英]Re-ordering columns in a csv but with Dictionaries

我需要重新排序 csv 中的列,但我需要從字典中調用每一列。

例子:

示例輸入 csv 文件:

$ cat file.csv
A,B,C,D,E
a1,b1,c1,d1,e1
a2,b2,c2,d2,e2

代碼

import csv

with open('file.csv', 'r') as infile, open('reordered.csv', 'a') as outfile:
    order_of_headers_should_be = ['A', 'C', 'D', 'E', 'B']
    dictionary = {'A':'X1','B':'Y1','C':'U1','D':'T1','E':'K1'}
    writer = csv.DictWriter(outfile)
    # reorder the header first
    writer.writeheader()
    for row in csv.DictReader(infile):
        # writes the reordered rows to the new file
        writer.writerow(row)

Output csv 文件需要如下所示:

$ cat reordered.csv
X1,U1,T1,K1,Y1
a1,c1,d1,e1,b1
a2,c2,d2,e2,b2

試圖創建一個變量來調用字典

你可以通過在你要寫行時排列鍵來做到這一點:

for row in csv.DictReader(infile):
    # writes the reordered rows to the new file
    writer.writerow({dictionary[i]: row[i] for i in row})

注意字典理解的使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM