如何使用python在csv中使用逗号格式化数字?

时间:2017-10-07 18:28:15

标签: python csv numpy string-formatting number-formatting

我收到一个csv文件,其中包含800到3000之间的数字。问题是大于千的数字中有逗号,例如1,227或1,074或2,403。 当我想使用scipy或numpy计算它们的均值,方差或标准差时,我得到错误:ValueError:无法将字符串转换为float:' 1,227'。如何将它们转换为数字,以便我可以对它们进行计算。不应更改CSV文件,因为它是只读文件。

2 个答案:

答案 0 :(得分:1)

谢谢,伙计们!我通过使用替换功能修复它。 hpaulj的链接很有用。

my_string=[val[2] for val in csvtext]
my_string=[x.replace(',', '') for x in my_string]
my_float=[float(i) for i in my_string]

这是代码,其中,第1行将csv字符串列表加载到my_string,第2行删除逗号,第3行生成易于计算的数字。因此,无需编辑文件或创建新文件。只需一个列表操作即可完成工作。

答案 1 :(得分:0)

这确实是一个locale问题,但一个简单的解决方案就是首先在字符串上调用replace

a = '1,274'
float(a.replace(',',''))  # 1274.0

另一种方法是使用pandas来读取csv文件。它的read_csv函数有一个thousands参数。

如果你对某个语言区有所了解,那么最好使用locale.atof()函数