join生成的数字转换为int

时间:2011-11-02 14:32:43

标签: python join

示例:

import re
rx = re.compile("{0-9}")
Var1 =bla bla bla 54467
Var2= rx.findall(Var1)
number = ''.join(Var2)

我的问题是如何将数字变量转换为int,我尝试使用int()但我得到一个错误。 或者有没有办法用另一种方法创建这样的变量int?

2 个答案:

答案 0 :(得分:4)

你的正则表达式错了。以下作品:

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]+"

答案 1 :(得分:4)

不要为此使用正则表达式。 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]