您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

5b51 2022/1/14 8:21:15 python 字数 2344 阅读 518 来源 www.jb51.cc/python

如何使用Python检测用户机器中的列表分隔符?需要在用户计算机上创建CSV文件,并且必须自动检测列表分隔符(以便excel可以读取CSV文件).我发现Excel从“区域选项 - >数字 - >列表分隔符”中获取CSV元素分隔符. Python中的locale模块用于检测文化设置,但它(locale.localeconv)不包含列表分隔符.用dialect

概述

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

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

我发现Excel从“区域选项 – >数字 – >列表分隔符”中获取CSV元素分隔符. Python中的locale模块用于检测文化设置,但它(locale.localeconv)不包含列表分隔符.用dialect =’excel’打开CSV编写器没有帮助.知道如何获得正确的分隔符吗?

编辑

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

import locale

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

拿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 == ",repr(list_delimiter)
',' ';'
>>>

总结

以上是编程之家为你收集整理的python csv列表分隔符基于区域设置全部内容,希望文章能够帮你解决python csv列表分隔符基于区域设置所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶