基于区域设置的python csv列表分隔符


问题内容

如何在使用Python的用户机器中检测列表分隔符?

需要在用户计算机上创建CSV文件,并且必须自动检测列表分隔符(以便excel可以读取CSV文件)。

我发现Excel从“区域选项->数字->列表分隔符”中采用CSV元素分隔符。Python中的语言环境模块用于检测文化设置,但它(locale.localeconv)不包含列表分隔符。使用方言=“
excel”打开CSV编写器没有帮助。任何想法如何获得正确的分隔符?

编辑

以下代码似乎有效(但不能接受任何投票,因为该解决方案不是我的)

import locale

langlocale = locale.getdefaultlocale()[0]
locale.setlocale(locale.LC_ALL, langlocale)
dp = locale.localeconv()['decimal_point']
delimiter = ','
if dp == ',':
    delimiter = ';'

问题答案:

xlwt编写一个XLS文件。

采取2: 使用区域设置模块和一些启发式方法:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, '') # set to user's locale, not "C"
'English_Australia.1252'
>>> dec_pt_chr = locale.localeconv()['decimal_point']
>>> if dec_pt_chr == ",":
...     list_delimiter = ";"
... else:
...     list_delimiter = ","
...
>>> print repr(dec_pt_chr), repr(list_delimiter)
'.' ','
>>> locale.setlocale(locale.LC_ALL, 'French_France.1252')
'French_France.1252'
>>> dec_pt_chr = locale.localeconv()['decimal_point']
>>> if dec_pt_chr == ",":
...     list_delimiter = ";"
... else:
...     list_delimiter = ","
...
>>> print repr(dec_pt_chr), repr(list_delimiter)
',' ';'
>>>