有人可以澄清为什么python不会在分隔符上分裂?

时间:2017-03-16 12:38:03

标签: python csv export-to-csv

我有一个包含元组的大清单:

data = [(
  u'378329',
  u'104',
  u'13/03/2017 12:41:29',
  u'18.19',
  u'7891008171730;CHOC GAROTO BRANCO NEGRESCO 
  125G;1;UN;5.29;5.297891021006934;CAFE MELITTA EXTRAFORTE     
  500G;1;UN;12.9;12.90'), similar entries....,
]

我正在尝试使用以下代码将这些条目写入csv:

with open('sefaz.csv', 'wb') as f:
     writer = csv.writer(f, delimiter=',', quotechar="'", quoting=csv.QUOTE_MINIMAL)
     writer.writerow(data[0])

这是我的输出:

bad output

任何人都可以向我解释这种行为吗?为什么分裂如此奇怪?

我想要整个字符串:

'7891008171730;CHOC GAROTO BRANCO NEGRESCO 125G;1;UN;5.29;5.297891021006934;CAFE MELITTA EXTRAFORTE     500G;1;UN;12.9;12.90' 

成为一个人。

2 个答案:

答案 0 :(得分:0)

您可以使用双引号:

  

可以引用任何字段(即包含在双引号内   字符)。必须引用某些字段,如下所示   规则。

  • 可以引用任何字段(即包含在双引号字符中)。必须引用某些字段,如以下规则中所述。

    "1997","Ford","E350"
    
  • 必须引用包含逗号或双引号字符的字段。

    1997,Ford,E350,"Super, luxurious truck"
    

查看Comma-separated values的更多详情。

答案 1 :(得分:0)

您正在努力完成csv.reader()中的所有选项。似乎最后一列是一个多行字符串。 csv库可以正常处理它,如下面的示例所示。如果您希望Excel能够读取您的文件,请使用dialect='excel'参数:

import csv

data = [(
  u'378329',
  u'104',
  u'13/03/2017 12:41:29',
  u'18.19',
  u'''7891008171730;CHOC GAROTO BRANCO NEGRESCO
  125G;1;UN;5.29;5.297891021006934;CAFE MELITTA EXTRAFORTE
  500G;1;UN;12.9;12.90'''),
]

with open('sefaz.csv', 'wb') as f:
    writer = csv.writer(f, dialect='excel')
    writer.writerow(data[0])

with open('sefaz.csv') as f:
    reader = csv.reader(f)
    print(next(reader))

输出:

['378329', '104', '13/03/2017 12:41:29', '18.19', '7891008171730;CHOC GAROTO BRANCO NEGRESCO\n  125G;1;UN;5.29;5.297891021006934;CAFE MELITTA EXTRAFORTE\n  500G;1;UN;12.9;12.90']

导入Excel时:

Imgur