Python中的转换类型

时间:2018-08-18 18:10:08

标签: python string python-3.x dictionary

我有以下代码

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

2 个答案:

答案 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(',', '.'))