首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python csv编写器分隔符错误?

Python csv编写器分隔符错误?
EN

Stack Overflow用户
提问于 2011-09-15 06:42:54
回答 2查看 21.3K关注 0票数 12

免责声明:我在欧洲。

根据this page的说法,在欧洲使用分号;作为默认分隔符,以“防止”与小数逗号的冲突。

现在,我有了这段Python代码:

代码语言:javascript
运行
复制
import csv

data = [["test", "data"], ["foo", "bar"]]
writer = csv.writer(open("data.csv", "wb"), dialect="excel")
writer.writerows(data)

它应该生成这个文件:

代码语言:javascript
运行
复制
test;data
foo;bar

但它使用的是逗号。为什么会这样呢?locale.getdefaultlocale()返回('nl_NL', 'cp1252')

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-15 06:58:32

这是因为csv.excel方言不支持区域设置。如果您希望显式地使用分号作为分隔符,则需要显式地将分隔符传递给csv.open as

代码语言:javascript
运行
复制
writer = csv.writer(open("data.csv", "wb"), delimiter=";")

或者创建一个新的方言并注册它

代码语言:javascript
运行
复制
class excel_semicolon(csv.excel):
    delimiter = ';'
register_dialect("excel-semicolon", excel_semicolon)

不管是哪种情况,你都应该测试一下浮点数是如何写出来的。我怀疑它们不会以您想要的欧洲格式编写(以逗号作为基数)。

票数 20
EN

Stack Overflow用户

发布于 2011-09-15 06:50:51

excel方言由以下属性指定(在Lib/csv.pyline 57中):

代码语言:javascript
运行
复制
delimiter = ','
quotechar = '"'
doublequote = True
skipinitialspace = False
lineterminator = '\r\n'
quoting = QUOTE_MINIMAL

我没有看到任何提示,这是某种程度上依赖于语言环境的--因此你总是会得到带有默认方言的,

但这很容易解决,例如:

代码语言:javascript
运行
复制
class excel_semicolon(csv.excel):
    delimiter = ';'

writer = csv.writer(open("data.csv", "wb"), dialect=excel_semicolon)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7423869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档