这是我的代码:
print int('adw第五代222')
显示错误:
Traceback (most recent call last):
File "a.py", line 5, in <module>
print int('adw第五代222')
ValueError: invalid literal for int() with base 10: 'adw\xe7\xac\xac\xe4\xba\x94\xe4\xbb\xa3222'
我能做什么,
感谢
答案 0 :(得分:4)
>>> int(re.search('\d+', u'adw第五代222').group())
222
答案 1 :(得分:1)
你试图将不是数字的东西变成整数。所以这显然无法奏效。您必须从字符串中提取数字。如果您不想使用正则表达式,可以尝试这样的方法:
s = u'adw第五代222'
n = int(''.join(c for c in s if c.isdigit()))
答案 2 :(得分:0)
我想你可以使用类似的东西:
class crazyint(int):
def __new__(cls, arg=1):
a = ''.join([x for x in arg if x.isdigit()])
return int.__new__(cls, a)
..允许使用crazyint('some234string434')。但我认为这更合适:
class crazyint(int):
def __new__(cls, arg=1):
print "whachu talkin' 'bout willis?"