有人可以澄清为什么 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时:
我有一个包含元组的大列表:
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时: