格式化浮点值列表的十进制精度,以逗号作为元组序列的十进制分隔符

时间:2018-07-24 14:41:54

标签: python list csv tuples

考虑一下,我在下面列出了浮点值。我导入语言环境美国以将逗号十进制分隔符转换为点十进制值。在将其转换为点值之前,我无法使用float格式函数,因为python不接受逗号值作为float值。当我在获得点值的元组之后还尝试使用浮点格式功能时,由于元组是不可变的,因此我将无法使用它。我需要所有的元组浮点值的十进制精度为2。如果有人可以帮助我,那将非常好。

cmdlet

预期输出:

b=['1,374', '6,978', '3,987']

这是我的代码,每行输出

b=((1.37), (6.97), (3.98))

输出:

b= [(x,) for x in b]

输出:

b=[('1,374', '6,978', '3,987')]

import locale
locale.setlocale(locale.LC_ALL,'English_United States.1252')
'English_United States.1252'
b=tuple(tuple(locale.atof(e.replace(',', '.')) for e in t) for t in b)

2 个答案:

答案 0 :(得分:1)

使用列表理解。替换,,然后转换为float,然后转换为round该值。

[round(float(x.replace(',','.')),2) for x in b]
[1.37, 6.98, 3.99]

答案 1 :(得分:1)

b = ['1,374', '6,978', '3,987']
a = tuple( (float( v.replace(',', '.')), ) for v in b )

a
>>> ((1.374,), (6.978,), (3.987,))