2011-08-12 8 views
1

私は、Windowsサーバー上のinformixデータベースからpythonとpyobdcを使って読んでいます。小数点以下の値を持つ行を取得Python String Formatting

私はこのような何かを得る:

[(Decimal("0.99"),), (Decimal("0.0"),), (Decimal("113.84"),),.....] 

Wordの小数を取り除くためにも問題ありませんが、私は、私は必要性をいけない "すべての括弧を削除する方法を見つけ出すとカント私はこのリストの合計を計算することができますように。あなたの問題は、あなたが十進(「XYZ」)を持っていることはありませんが、それぞれの値であることを

何のpythonでそれを行うための最良の方法です?

+0

おそらく文字列がないので、あなたは「言葉を取り除いている」わけではありません。そこにデータ構造があります。そこに表示される文字列は、データのテキスト表現です。 –

答えて

3

Decimalオブジェクトの合計を計算すると、__sum__メソッドがあります。

>>> from decimal import Decimal 
>>> a = [(Decimal("0.99"),), (Decimal("0.0"),), (Decimal("113.84"),)] 
>>> sum(i[0] for i in a) #Because they're in a tuple 
Decimal('114.83') 
+1

厳密に言えば、 'Decimal from Import Decimal'は、' Decimal'オブジェクトがすでにインスタンス化されているので、必要ではありません。 –

+0

@Chinmay最初から設定する必要があります:) –

1

タプル内の値を取得する必要があります。タプルを合計することができます。

a = [(Decimal("0.99"),), (Decimal("0.0"),), (Decimal("113.84"),),.....] 
b = sum(number[0] for number in a) 
+0

'Decimal()'型は追加をサポートしていますか、あるいは最初に 'float'にキャストしなければなりませんか? –

+0

'Decimal'は追加だけで十分です。 –

+1

@Brandon:彼らは追加をサポートします。フロートにキャストするのは悪い考えです。精度が落ちるからです。 –