我正在使用Python 3.6.3,使用以下代码,从int()
和isdigit()
遇到奇怪的行为:
s = "..... not less than 66²/ 3 % of ......"
total = 0
for c in s:
if c.isdigit():
total += int(c)
ValueError: invalid literal for int() with base 10: '²'
我了解该错误,并且知道可以使用try catch
跳过该错误。我的问题是,如果isdigit()
返回true,则应将char \ string强制转换为没有错误,或者isdigit()
应该返回false。否则,int()
和isdigit()
应该是连贯的。
答案 0 :(得分:3)
这正是as documented:
str.isdigit()
如果字符串中的所有字符都是数字,则返回true 并且至少有一个字符,否则为false。数字包括 需要特殊处理的十进制字符和数字,例如 兼容性上标数字。这涵盖了不能 用于形成以10为底的数字,例如Kharosthi数字。正式地 一个数字是具有属性值Numeric_Type = Digit的字符 或Numeric_Type =十进制。