首页 > 解决方案 > Python:如何确定我正在运行程序的计算机是否使用欧洲小数

问题描述

我为 Python 编写了一个程序,它在 pandas 中读取一个 csv 文件,然后进行一些分析。不幸的是,一些正在使用我的程序的朋友使用欧洲计算机,因此他们的 csv 文件使用逗号 (,) 来分隔小数,而我使用点 (.) 。在任何情况下,列之间的一般分隔符都是分号,所以那里没有问题。

现在我在程序的开头有一个设置,如下所示:

european_decimal=True #False

然后稍后

if european_decimal:    
          df1 = pd.read_csv(directory+filename,delimiter=";",decimal=",")
else:    
          df1 = pd.read_csv(directory+filename,delimiter=";")

这当然有效。但它真的很丑,需要我不是计算机程序员的朋友来乱码。有什么方法可以找出运行 python 程序的计算机是否使用逗号或句号作为分隔符?

后期编辑:最后我应用了@ALollz 解决方案,我只是将任何带逗号的字符串转换为带点的字符串:

for column in list_data_columns: 
       df1[column]=df1[column].astype(str).str.replace(",",".").astype(float) 

标签: pythonpandaseuropean-data-format

解决方案


您正在寻找locale模块,Doug Hellman 在此 Python Module Of The Week 专栏中合理地完整描述了该模块。

提示:您可能正在寻找locale.getlocale()['decimal_point']and locale.getlocale()['mon_thousands_sep']


推荐阅读