【问题标题】:formatting a string with multiple float values in python在python中格式化具有多个浮点值的字符串
【发布时间】:2011-05-08 17:07:19
【问题描述】:

我正在尝试截断同一字符串中包含的一些浮点值,但我不太确定如何继续。

目前我正在使用 Python xml.dom.minidom 使用 Node.toxml() 写出一些 xml。我有类似的东西:

1.471392 0.740274 0.659904 -0.560021 1.312128 -0.697930 1.557193 5.156295 2.279541 -0.760170 -0.778676 
-4.882018 0.872503 0.553950 4.468880 -0.793693 0.572676 0.521594 -1.535048 -0.736827 -3.014793 12.288257   
5.243127 -0.850610 2.382368 2.183009 0.733634 0.669893 -0.658211 -1.229626 6.780756 -0.608808 -0.914032 

但我想将每个浮点值截断到小数点后 2 位,所以第一个值看起来像:

1.47 0.74 

我没有包含其他值。

我猜想循环遍历整个文档并使用一些函数循环遍历每个字符串是要走的路吗?有没有人这样做过或发现了一个我完全想念的简单解决方案?

非常感谢, C

【问题讨论】:

标签: python xml string formatting


【解决方案1】:

这是一个单行:

" ".join([str(round(float(i),2)) for i in data.split(' ')])

其中 data 包含您的浮点数字符串。可能不是最有效的,但它可以完成工作。

【讨论】:

    【解决方案2】:
    >>> '%.2f' % (1.471392,)
    '1.47'
    

    【讨论】:

      【解决方案3】:
      def round_2(f):
          return round(f, 2)
      
      >>> map(round_2, [1.3234254, 2.33521453])
      [1.32, 2.34]
      

      函数式编程摇滚!

      顺便说一句,我不完全清楚你是在操作字符串还是浮点数组,但如果是前者,只需先将字符串拆分为浮点数组即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-23
        • 1970-01-01
        相关资源
        最近更新 更多