【问题标题】:Compare numbers in form: 12,3K , 1,84M in python比较表格中的数字:python 中的 12,3K , 1,84M
【发布时间】:2016-02-24 18:46:36
【问题描述】:

需要比较如下数字:12,3K、1,84M 等 例如:

a = 12,3K 
b = 1,84M
if b > a :
    print b 

【问题讨论】:

  • a 和 b 应该是字符串吗?
  • 您的意思是k *1000M *1000000?并在定义数字时使用. 而不是,。所以a=12.3 * 1000而不是12,3K
  • 编写一个函数,接受一个像“12.3K”这样的字符串并将其转换为数字12300。该函数将查看字符串的最后一个字符并将其转换为K的1000,M的1000000等。如果数字已经采用这种格式,它可能还必须用逗号交换句点。
  • @MSeifert:., 的使用取决于地区。
  • @Michalis T. 请更改您的示例代码。你应该有一个并代表字符串,因此它应该类似于a,b="12,3K", "1,84M"

标签: python numbers compare


【解决方案1】:

你需要为它使用替换:

a = ("12,3K", "1,84M")
numbers = {"K": 1000, "M": 1000000}

result = []

for value in a:
    if value:
        i = value[-1]
        value = float(value[:-1].replace(',', '.')) * numbers[i]
        result.append(int(value))

print max(result)

您可以将更多数字添加到字典中,您将获得更多结果。

【讨论】:

    【解决方案2】:

    我会推荐一个函数来将 ab 转换为相应的数字,就像这样(我也会制作 ab 字符串:

    def convert(num):
        return num.replace(',','').replace('K','000').replace('M','000000')
    
    a = '12,3K'
    b = '1,84M'
    if convert(b) > convert(a) :
        print b
    

    【讨论】:

    • 感谢您的帮助,实际上我从网络抓取中得到了一个列表,格式为:['12.3K','234','1.84M','23'],我想比较一下这与另一个相同形式的列表
    【解决方案3】:

    如果您的值是字符串,那么 re 模块可以轻松地将逗号替换为 '' 以及将 K 或 M 替换为 3 或 6 个零。然后包裹int() 并进行比较。您在哪里/如何获得要比较的值?

    【讨论】:

    • 基本上我从网络抓取中获取它们,例如:['12.3K','123','1.34M','34']
    • 我想将它们与另一个列表进行比较: ['10.9K' , '123' , '2.67M' , '34']
    猜你喜欢
    • 2018-02-03
    • 2016-06-10
    • 2022-06-11
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    相关资源
    最近更新 更多