将第一行的分隔符从“,”替换为“;”在Python的csv文件中

时间:2016-09-16 09:17:37

标签: 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文件读成字典而不更改标题的分隔符?

BTW:我通过IDE PyCharm使用Python 2.7.12和Anaconda 4.0.0

1 个答案:

答案 0 :(得分: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,但现在更优雅。