簡體   English   中英

使用指定的分隔符重新排序CSV文件中的列

[英]Re-ordering columns in a CSV file with a specified delimiter character

基本上,我想實現與此處批准的答案完全相同的任務。

但是,如果輸入CSV文件使用分號作為分隔符,則該解決方案對我不起作用。 我試圖將代碼更改為

writer = csv.DictWriter(outfile, fieldnames=fieldnames,  delimiter = ';')

但是它並不能解決問題,只會產生具有新順序的CSV,標頭良好,但數據為空(即,僅寫入分隔符)。

很抱歉創建一個副本,但鑒於原始帖子的年代久遠,我懷疑有人會注意到我在那里的問題/評論。

我正在使用以下代碼:

#!/usr/bin/env python3

import sys, os, csv

def reorder():
    with open('in.csv', 'r') as infile, open('out.csv', 'a') as outfile:
        fieldnames = ['A', 'C', 'D', 'E', 'B']
        writer = csv.DictWriter(outfile, fieldnames=fieldnames, delimiter = ';')
        writer.writeheader()
        for row in csv.DictReader(infile):
            writer.writerow(row)

def main():
    reorder()

# standard boilerplate to call the main() function to begin the program
if __name__ == '__main__':
    main()

in.csv提供以下內容不會產生很好的結果:

A;B;C;D;E
a1;b1;c1;d1;e1
a2;b2;c2;d2;e2

用逗號替換分號可產生良好的效果。

更新:

我按如下方式更改了相應的代碼,可以正常工作:

    with open('in.csv', 'r') as infile, open('out.csv', 'w') as outfile:
        reader = csv.DictReader(infile, fieldnames = ['A', 'B', 'C', 'D', 'E'], delimiter=';')

        fieldnames = ['A', 'C', 'D', 'E', 'B']
        writer = csv.DictWriter(outfile, fieldnames=fieldnames, delimiter=';')
        writer.writeheader()
        for row in reader:
            writer.writerow(row)

看看您的DictReader產生了什么。 您需要添加delimiter=';' 讀者,而不僅僅是作家。

暫無
暫無

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

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