2011-03-09 78 views
0

這是我的代碼:如何讓一個Python字符串數

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' 

我能做些什麼,

感謝

回答

4
>>> int(re.search('\d+', u'adw第五代222').group()) 
222 
1

你正在嘗試變成不是數字的東西nto整數。所以這顯然不會起作用。你將不得不從字符串中提取數字。如果你不想使用正則表達式,你可以嘗試這樣的事:

s = u'adw第五代222' 
n = int(''.join(c for c in s if c.isdigit())) 
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?" 
相關問題