簡體   English   中英

將第一行的定界符從“,”替換為“;” 在Python的csv文件中

[英]Replace the delimiter of first line from ',' to ';' in csv file by Python

我得到了一個奇怪的csv文件,其標頭的定界符為“,”而普通行的定界符為“;”。 這給我帶來麻煩,無法通過python將其作為字典進行讀取和處理:

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文件作為字典而不更改標題的定界符?

順便說一句:我正在通過IDE PyCharm將Python 2.7.12與Anaconda 4.0.0一起使用

您可以使用傳統的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讀取/寫入,但是當前的解決方案要優雅得多。

暫無
暫無

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

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