-1

ここにいくつかのデータがテキストファイルにあり、正規表現を使用してファイルからデータを解析し、数値とインデックスを2つの変数に格納しています。数値を小数点以下第2位で四捨五入して、新しいファイル(インデックス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桁に丸めると

私は2つの問題に遭遇しました

  1. A(11,000.233)とC(14,798.241)のValueErrorが表示されます

    私はそれが11,000.23のによって引き起こされていることを理解しています。でもどう対処したらいいのかわからないのですが、どう対処したらいいのか教えていただけませんか?

  2. Bの場合、同じ方法で数値を変換しようとすると、4.00ではなく4.0になります。とにかく4.0の代わりに4.00を出力できるものはありますか?

4

2 に答える 2

1
  1. 文字列メソッドを使用して、を使用する前replace()に削除します。,float()

    float("1,123.4567".replace(",", ""))
    
  2. stringformat()メソッドを使用して、floatの文字列表現を変更します。

    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 に答える