2011-08-12 364 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:他们支持添加。投到浮球是一个坏主意,因为那样你就失去了精确性。 –