カンマを含む、シートからスキャンされた浮動小数点数をテキストとして解析するにはどうすればよいですか?Jython:コンマを含む浮動小数点テキストの解析
txt = "1,903.44"
value = float(txt) # This fails due to ',' in string
更新:申し訳ありませんが、私は明確ではありませんでした。私は、ロケールモジュールを持たないjython 2.5を使用しています。
カンマを含む、シートからスキャンされた浮動小数点数をテキストとして解析するにはどうすればよいですか?Jython:コンマを含む浮動小数点テキストの解析
txt = "1,903.44"
value = float(txt) # This fails due to ',' in string
更新:申し訳ありませんが、私は明確ではありませんでした。私は、ロケールモジュールを持たないjython 2.5を使用しています。
txt = "1,903.44"
value = float(txt.replace(',', ''))
ローカリゼーションが必要な場合は、実際には機能しませんが、コンマが区切り文字であることがわかっている場合は、そのトリックがあります。
の後にlocale.atof()
を使用してください。
+1 OPが金銭的価値を扱っている場合は、浮動小数点数の代わりに10進数のパッケージを使用する方が賢明かもしれません。 http://stackoverflow.com/questions/723356/when-is-it-appropriate-to-use-floating-precision-data-types –
これは、金額を得るために請求書を解析するためのものです。 – gregturn
locale.localeconv()['thousands_sep']を使用すると、ロケールセーフバージョンの置換アイデアの区切り文字を取得できます。 Jythonを除いて、明らかに。 –
カンマを取り除くことができます:
txt = txt.replace(',', '')
value = float(txt)
金額を扱うとき、私は個人的に浮動小数点を使用するときに発生するwell-documented pitfallsを避けるために、小数点以下のパッケージを使用します。
from decimal import Decimal
txt = txt.replace (',', '')
value = Decimal(txt)
他のポスターで述べたように、これが唯一のロケールを使用することが知られている場合は桁区切り記号として「」動作しますが、あなたは正しい方向に軌道に乗る必要があります。
私はロケールモジュールを持っていないため、これは最も簡単です。ありがとう! – gregturn