2011-08-12 241 views
1

我正在通過python和pyobdc從windows服務器上的informix數據庫讀取數據。Python字符串格式化

檢索與十進制值的行我得到這樣的:

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

這是沒有擺脫字十進制的問題,但我不能想出如何刪除所有的括號和「我不需要這樣我就可以計算出該列表的總和。

什麼是做在python的最佳方式?

+0

你不是「擺脫詞」,因爲你大概沒有字符串;你有一個數據結構。您顯示的字符串只是數據的文本表示。 –

回答

3

您可以計算小數對象的總和,他們有__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'不是必需的,因爲'Decimal'對象已經被實例化。 –

+0

@Chinmay有必要從頭開始創建一個例子:) –

1

你的問題不在於你有小數(「XYZ」),但每個值都在一個元組中,所以,你需要從元組中取出這些值,以便將它們相加。

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

'Decimal()'類型是否支持添加或他首先必須將其轉換爲'float'? – 2011-08-12 15:49:07

+0

'Decimal'支持添加就好了。 –

+1

@Brandon:他們支持添加。投到浮球是一個壞主意,因爲那樣你就失去了精確性。 –