例子:加入制作数字转换成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. –