例子:加入製作數字轉換成int
import re
rx = re.compile("{0-9}")
Var1 =bla bla bla 54467
Var2= rx.findall(Var1)
number = ''.join(Var2)
我的問題是如何轉換爲數字的變量爲int,我嘗試用int()函數這樣做,但我得到一個錯誤。 或者有沒有辦法用另一種方法創建一個像int這樣的變量?
例子:加入製作數字轉換成int
import re
rx = re.compile("{0-9}")
Var1 =bla bla bla 54467
Var2= rx.findall(Var1)
number = ''.join(Var2)
我的問題是如何轉換爲數字的變量爲int,我嘗試用int()函數這樣做,但我得到一個錯誤。 或者有沒有辦法用另一種方法創建一個像int這樣的變量?
請勿對此使用正則表達式。 filter()
是五臟俱全更容易和更快:
>>> s = "bla bla bla 54467 bla"
>>> int(filter(str.isdigit, s))
54467
上面的代碼將字符串中的所有數字合併爲一個字符串。如果你不想這樣,使用
>>> s = "bla 1223 bla 54467 bla"
>>> map(int, filter(str.isdigit, s.split()))
[1223, 54467]
適用於Python 3.x都有同樣的食譜是:
>>> s = "bla bla bla 54467 bla"
>>> int("".join(filter(str.isdigit, s)))
54467
>>> s = "bla 1223 bla 54467 bla"
>>> list(map(int, filter(str.isdigit, s.split())))
[1223, 54467]
你的正則表達式是錯誤的。以下作品:
import re
rx = re.compile("[0-9]") # note the change
Var1 ='bla bla bla 54467 bla'
Var2= rx.findall(Var1)
number = int(''.join(Var2))
print number
注意上面的代碼會發現所有的數字裏面的字符串,不管他們是否是連續的,並把它們合併成一個單一的數字。要獲得連續數字的組,請將您的正則表達式更改爲"[0-9]+"
。
地圖功能給我其他輸出不喜歡你在這裏。它給了我那個輸出:<地圖對象在0x1beb250>。我想得到你在這裏的輸出,怎麼樣? –
和int()當你在這裏寫它也不工作,它給我一個錯誤,它不喜歡轉換過濾器。 –
@HananN .:我的解決方案是針對Python 2.x的。你沒有說你正在使用Python 3.x,95%的用戶仍在使用2.x. –