替换';中第一行的分隔符';到'';用Python在csv文件中

替换';中第一行的分隔符';到'';用Python在csv文件中,python,csv,delimiter,Python,Csv,Delimiter,我得到了一个奇怪的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文件,它的头的分隔符是,“,而公共行的分隔符是;”这给我阅读和处理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
,但现在的解决方案要优雅得多。

是否保证在第一行中不使用逗号?好的,第一行的分隔符只是“,”,否“;”存在于第一行谢谢,我已经尝试过你的解决方案,它对我有效,谢谢你的详细解释~