Python:如何确定运行程序的计算机是否使用欧洲十进制

时间:2019-06-04 15:34:51

标签: python pandas european-data-format

我为Python编写了一个程序,该程序读取熊猫中的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) 

1 个答案:

答案 0 :(得分:2)

您正在寻找the locale module,Doug Hellman在this Python Module Of The Week column中对此进行了充分的描述。

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