我有以下代码
text_file = open("up2017.txt", "r")
amount=[]
for line in text_file:
fields = line.strip().split(" ")
amount.append(fields[-1])
list(map(float,amount))
然后出现以下错误
ValueError:无法将字符串转换为float:'50 .000,00'
文本文件看起来像
13.10 Ovf 12.10 50.000,00 50.000,00
30.10 Bgs 30.10 12.000,00 62.000,00
30.11 Bgs 30.11 12.000,00 74.000,00
15.12 Bgs 15.12 53.528,36 127.528,36
30.12 Bgs 30.12 12.000,00 139.528,36
答案 0 :(得分:3)
执行此操作的正确方法是使用适当的locale
。
例如,在西班牙语国家/地区,通常将.
用作千位分隔符,而将,
用作十进制分隔符。
import locale
locale.setlocale(locale.LC_NUMERIC, 'es')
value = locale.atof('50.032,56') # yields float(50032.56)
对于您而言,您可以执行以下操作:
import locale
locale.setlocale(locale.LC_NUMERIC, 'es')
# ...
values = map(locale.atof, amount)
答案 1 :(得分:1)
使用str.replace
方法:
amount.append(fields[-1].replace('.', '').replace(',', '.'))