【问题标题】:Sum of digits in a string to take care of whole number字符串中的数字总和以处理整数
【发布时间】:2015-08-15 22:22:44
【问题描述】:

请不要将此问题标记为重复,因为我已经看到了另一个问题Sum of digits

好吧,我有以下代码

string = "2x83u0x7u8i9lkueieueue8"

numeric = lambda x: int(x) if x.isdigit() else 0
print reduce(lambda x, y: x + numeric(y), string , 0)

答案应该是 2 + 83 + 0 + 7 + 8 + 9 + 8 = 117 而不是 45

【问题讨论】:

    标签: python sum


    【解决方案1】:

    最简单的方法是使用正则表达式:

    import re
    
    string = "2x83u0x7u8i9lkueieueue8"
    
    print(sum(map(int, re.findall("\d+", string))))
    

    "\d+" 找到 1 个或多个数字,因此我们只需将生成的字符串数字列表映射到 int 和 sum

    【讨论】:

      【解决方案2】:

      reduce() 始终对可迭代对象中的每个项目单独进行操作。在这种情况下,这意味着子字符串“83”被您的代码视为整数 8​​ 和整数 3,而不是 83。如果您想正确处理多位值,则需要更改方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-23
        • 1970-01-01
        • 1970-01-01
        • 2013-01-11
        • 1970-01-01
        • 2019-03-29
        相关资源
        最近更新 更多