2016-09-16 60 views
1

我有一個奇怪的CSV文件,其頭標的分隔符是',',而普通行的分隔符是';'造成的麻煩,我閱讀和處理它由蟒蛇的字典:將第一行的分隔符從','替換爲';'在Python的CSV文件

players.first_name,players.last_name,players.vis_name,players.player_id 
Duje;Cop;Cop;8465 
Dusan;Svento;Svento;8658 
Markus;Henriksen;Henriksen;7687 

我不知道如果我只能更換頭與分隔符「;」或者如果有一種方法來讀取這樣的csv文件作爲字典而不改變標題的分隔符?

BTW:我通過IDE使用Python 2.7.12與蟒蛇4.0.0 PyCharm

+0

是否保證在第一行中不會使用逗號? – Jeon

+0

好吧,第一行的分隔符只是',',否';'存在於第一行 – LancelotHolmes

回答

2

您可以閱讀經典CSV閱讀的第一線,只是爲了讓字段名,然後繼續閱讀字典閱讀器,此時將分隔符更改爲;

import csv 

with open("input.csv") as f: 
    cr = csv.reader(f, delimiter=",") 
    fieldnames = next(cr) 

    cr = csv.DictReader(f,fieldnames=fieldnames,delimiter=";") 

    for d in cr: 
     print(d) 

結果:

{'players.player_id': '8465', 'players.vis_name': 'Cop', 'players.first_name': 'Duje', 'players.last_name': 'Cop'} 
{'players.player_id': '8658', 'players.vis_name': 'Svento', 'players.first_name': 'Dusan', 'players.last_name': 'Svento'} 
{'players.player_id': '7687', 'players.vis_name': 'Henriksen', 'players.first_name': 'Markus', 'players.last_name': 'Henriksen'} 

PS:我以前的解決方案涉及讀取/寫入StringIO,但目前的一個是更優雅。

+0

謝謝,我已經試過你的解決方案,它適用於我,謝謝你的詳細解釋〜 – LancelotHolmes

相關問題