将带逗号和点的字符串整数转换为浮点

2024-04-25 06:43:41 发布

您现在位置:Python中文网/ 问答频道 /正文

您好,我需要一些帮助来编写一个函数,将价格的字符串表示形式转换为实际浮动

values = ['1.999,00','299,00','299,86', '1.549,99']

理想情况下,输出为

output = [1999.00, 299.00, 299.86, 1549.99]

我试着用replace来做,但是做不到


3条回答

hayo,首先用空替换点,然后用.替换,

values = ["1.999,00", "299,00", "299,86", "1.549,99"]

output = [float(x.replace(".", "").replace(",", ".")) for x in values]

print(output)

另一种替代方法是

values = ['1.999,00','299,00','299,86', '1.549,99']
values = [float(value.translate(str.maketrans({'.': '', ',': '.'}))) for value in values]

这是输出:

print(values)
[1999.0, 299.0, 299.86, 1549.99]

maketrans是一种同时交换两个变量的值的优雅方法,例如A,B=B,A

从外观上看,您似乎正在处理欧元格式。 为了简单起见,我们将回到英语。这样,可以用零替换点,用点替换逗号。转换后,有一个新的列表可将浮动推送到其中

    values = ['1.999,00','299,00','299,86', '1.549,99']
    floatValues = []
    
    for v in values:
        tmp = v.replace(".", "").replace(",", ".")
        floatValues.append(float(tmp))
    
    
    print ("values: ", values);
    print ("floatValues: ", floatValues);

输出

values:  ['1.999,00', '299,00', '299,86', '1.549,99']

floatValues:  [1999.0, 299.0, 299.86, 1549.99]

相关问题 更多 >