我在文本文件中有一些数据,我使用正则表达式来解析数据 从文件中存储数字和索引在两个变量中。我想将数字四舍五入到相同的小数位并将其写入一个新文件(使用它的索引A,B,C)
这组数据全部在小数点后3位
11,000.233
B 4.000
C 14,798.241另一组数据在小数点后2位
11,000.23
B 4.00
C 14,798.24当我使用readlines()
读取它们时,它们最初都是字符串格式但是当我将第一组数据中的字符串转换为float时,然后使用str(round(float(number),2)将它从3位小数位舍入到2位小数位)
我遇到了两个问题
它会给我一个A(11,000.233)和C(14,798.241)的ValueError
据我所知,这是由11,000.23中的,引起的。但我不知道如何处理它。有人可以给我一些关于如何处理它的建议吗?
对于B,当我尝试使用相同的方法转换数字时,它给我4.0而不是4.00。无论如何可以输出4.00而不是4.0?
答案 0 :(得分:1)
在使用replace()
之前,请使用字符串,
方法删除float()
。
float("1,123.4567".replace(",", ""))
使用字符串format()
方法更改浮点字符串表示形式。
format(4.0, ".2f")
答案 1 :(得分:0)
将字符串拆分为","
并使用"".join()
:
In [32]: strs="11,000.233"
In [33]: float("".join(strs.split(",")))
Out[33]: 11000.233
In [34]: strs="14,798.24"
In [35]: float("".join(strs.split(",")))
Out[35]: 14798.24
您可以使用字符串格式来获取4.00
:
In [36]: strs="4.00"
In [37]: float(strs)
Out[37]: 4.0
In [39]: format(float(strs),".2f")
Out[39]: '4.00'
In [40]: "{0:.2f}".format(float(strs))
Out[40]: '4.00'