-1

我在一个文本文件中有一些数据,我使用正则表达式解析文件中的数据并将数字和索引存储在两个变量中。我想将数字四舍五入到相同的小数位并将其写入一个新文件(索引为 A、B、C)

本组数据均为小数点后3位

11,000.233

乙 4.000

C 14,798.241

另一组数据在小数点后2位

11,000.23

乙 4.00

C 14,798.24

当我使用 readlines() 阅读它们时,它们最初都是字符串格式

但是当我将第一组数据中的字符串转换为浮点数,然后使用 str(round(float(number),2)) 将其从小数点后 3 位舍入到小数点后 2 位

我遇到了两个问题

  1. 它会给我 A (11,000.233) 和 C (14,798.241) 的 ValueError

    我知道这是由11,000.23 中的,​​ 引起的。但我不知道如何处理它。有人能给我一些关于如何处理它的建议吗?

  2. 对于 B,当我尝试用相同的方法转换数字时,它给了我 4.0 而不是 4.00。反正有没有可以输出 4.00 而不是 4.0 的?

4

2 回答 2

1
  1. 使用字符串replace()方法删除,之前使用的float().

    float("1,123.4567".replace(",", ""))
    
  2. 使用 stringformat()方法更改浮点数的字符串表示。

    format(4.0, ".2f")
    
于 2012-11-18T13:02:31.940 回答
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'
于 2012-11-18T13:00:37.950 回答