如何更改默认的CSV分隔符?

时间:2017-12-26 21:16:51

标签: python python-2.7 csv

我正在尝试单独读取一个csv文件;。

代码:

import csv
with open('Ingresos_e_eCPM_por_fecha_y_cliente.csv', 'rb') as csvfile:
    spamreader = csv.reader(csvfile, quotechar='|')
    for row in spamreader:
        print ', '.join(row)

我有这个csv数据:

21/12/2017;En;229.620;18.508;8,06%;14,56;0,79
22/12/2017;En;204.042;48.526;23,78%;43,98;0,91
23/12/2017;En;102.613;20.223;19,71%;17,86;0,88
24/12/2017;En;90.962;19.186;21,09%;14,26;0,74
25/12/2017;En;60.189;12.654;21,02%;11,58;0,92

问题是当我尝试用我的python代码阅读时,它向我展示了这些:

21/12/2017;En;229.620;18.508;8, 06%;14, 56;0, 79
22/12/2017;En;204.042;48.526;23, 78%;43, 98;0, 91
23/12/2017;En;102.613;20.223;19, 71%;17, 86;0, 88
24/12/2017;En;90.962;19.186;21, 09%;14, 26;0, 74
25/12/2017;En;60.189;12.654;21, 02%;11, 58;0, 92

我需要的数据与csv相同!

2 个答案:

答案 0 :(得分:2)

如果您阅读文档,则会看到您可以指定Dialect.delimiter告诉csv module使用哪个字符来分隔字段。

csv.reader(csvfile, dialect='excel', **fmtparams)
  

可以给出其他可选的fmtparams关键字参数   覆盖当前方言中的各个格式参数。

在你的情况下:

spamreader = csv.reader(csvfile, delimiter=';', quotechar='|')

答案 1 :(得分:2)

您应该将逗号分隔值(csv)文件分隔符调整为分号delimiter=';'

import csv 
with open('Ingresos_e_eCPM_por_fecha_y_cliente.csv', 'rb') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=';', quotechar='|')
    for row in spamreader:
        print ', '.join(row)

另一种方法是使用所提供的方言之一(分号为csv的通常罪魁祸首是excel):

import csv 
with open('Ingresos_e_eCPM_por_fecha_y_cliente.csv', 'rb') as csvfile:
    spamreader = csv.reader(csvfile, dialect='excel', quotechar='|')
    for row in spamreader:
        print ', '.join(row)