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

Can someone clarify why python's does not split on the delimiter?

我有一个包含元组的大列表:

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])

这是我的输出:

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

我想要整个字符串:

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

排在第一位。

您可以使用双引号:

Any field may be quoted (that is, enclosed within double-quote characters). Some fields must be quoted, as specified in following rules.

  • 任何字段都可以用引号引起来(即用双引号字符括起来)。一些字段必须被引用,如以下规则所指定。

    "1997","Ford","E350"
    
  • 必须引用带有嵌入逗号或双引号字符的字段。

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

查看来自 Comma-separated values 的更多详细信息。

您对 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时: