【问题标题】:Python String FormattingPython 字符串格式化
【发布时间】:2011-08-12 15:43:32
【问题描述】:

我正在通过 python 和 pyobdc 从 windows 服务器上的 informix 数据库中读取数据。

用十进制值检索一行我得到这样的结果:

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

去掉Word小数点没问题,但我不知道如何删除所有大括号和“我不需要这样我可以计算这个列表的总和。

在 python 中最好的方法是什么?

【问题讨论】:

  • 您没有“摆脱单词”,因为您可能没有字符串;你在那里有一个数据结构。您在此处显示的字符串只是数据的文本表示形式。

标签: python string format


【解决方案1】:

你可以只计算 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')

【讨论】:

  • 严格来说,from decimal import Decimal 不是必需的,因为 Decimal 对象已经被实例化了。
  • @Chinmay 虽然有必要从头开始设置一个示例 :)
【解决方案2】:

你的问题不是你有 Decimal("xyz") 而是每个值都在一个元组中。因此,您需要从元组中取出值,以便对它们求和。

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

【讨论】:

  • Decimal() 类型是否支持加法,还是必须先将其转换为 float
  • Decimal 支持加法就好了。
  • @Brandon:他们支持加法。转换为浮点数是个坏主意,因为那样会失去精度。
猜你喜欢
  • 2019-11-28
  • 2011-07-28
  • 1970-01-01
  • 2015-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-07
  • 2016-06-21
相关资源
最近更新 更多