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

how to detect list separator in users machine with Python?

CSV file needs to be created on users machine and the list separator must be detected automatically (so that excel can read the CSV file).

I've found out that Excel takes CSV elements separator from "Regional Options -> Numbers -> List separator". locale module in Python is used to detect cultural settings, but it (locale.localeconv) does not contain list separator. Opening CSV writer with dialect='excel' does not help. Any idea how to get the correct separator?

EDIT

The following code seems to work (but can't accept any upvotes as the solution is not mine)

import locale

langlocale = locale.getdefaultlocale()[0]

locale.setlocale(locale.LC_ALL, langlocale)

dp = locale.localeconv()['decimal_point']

delimiter = ','

if dp == ',':

delimiter = ';'

解决方案

Write an XLS file with xlwt.

Take 2: Use the locale module and some heuristics:

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

',' ';'

>>>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值