【问题标题】:Convert multiple string values (Python 3)转换多个字符串值(Python 3)
【发布时间】:2020-08-14 15:36:56
【问题描述】:

大家早上好!

这是我在尝试 Python 之后,在寻求建议后第一次在这个网站上发帖。

我正在从 sqlite 数据库中提取数据并将其输入到 Excel 电子表格中。我已经学会了如何提取数据,并将其写入电子表格。不过,我遇到的问题是我从中提取数据的表中的值之一,将美元金额作为字符串呈现。例如,1000.00 美元表示为 100000。乍一看,它似乎是 100000 美元,但无论出于何种原因,应用程序将 1000.00 美元存储为 100000。

所以我的问题:有没有办法可以将这些字符串值转换为浮点数,或者转换为另一个字符串以输入美元符号和小数点以显示正确的数字?这也不仅仅是一个价值的转换。它需要进行一揽子转换,以便每当我运行脚本时,它都会转换数据,无论显示的金额是多少。

因此,如果表包含 50000、20000、30000、5000、500 的值,我需要能够将它们转换为 $500.00、$200.00、$300.00、$50.00、$5.00。

我希望一切都有意义,我感谢任何人可以给我的任何帮助!

【问题讨论】:

    标签: python-3.x sqlite android-sqlite data-conversion


    【解决方案1】:

    您必须将该值除以100,以去除最后2个0s,然后使用函数printf()进行格式化:

    printf("$%.2f", columnname / 100)
    

    columnname 替换为您的专栏名称。

    所以结果:

    select printf("$%.2f", 500 / 100)
    

    是:

    $5.00
    

    请参阅demo

    【讨论】:

    • 这太好了,谢谢。也感谢演示!这正是我需要这样做的方式。此外,“%”符号是否代表该特定列的单元格中的任何值的通配符值?
    • 所以我遇到的一个问题是当涉及“美分”时。所以假设有一个值 8888,应该是 88.88 美元,我使用了你提供的语句,它打印 8888 为 88.00 美元。有什么想法为什么它没有达到 88 美分的价值?
    • 在你的问题中你没有提到任何美分。而不是 100 使用 100.0:db-fiddle.com/f/ozkGqbnhnc3DMCUWajjV88/1
    【解决方案2】:

    如果您尝试在 Python 中转换值,您可以执行以下操作:

    new_value = float(old_value) / 100
    

    这将尝试将字符串转换为浮点值,然后将其除以 100 以更正小数位。如果精度很重要,您可能希望使用小数类型而不是浮点数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-24
      • 2015-10-27
      相关资源
      最近更新 更多