在字符串python re.findall中提取整数

时间:2016-02-19 08:53:27

标签: python regex string

我有以下代码正常工作,但当我的字符串为“hello I am in 12th grade but i am 230 years old”时,我收到12, 230但我希望12230为一个整数。我如何实现这一目标?

import re

def main():
    str1 = 'ABCD12'
    str1 = input("Enter a String: ")
    str1 = "3158 reviews"
    person = re.findall('\d+', str1)
    if person:
        print(person)
    else:
        print("0")

main()

3 个答案:

答案 0 :(得分:5)

使用str.join,您可以将多个字符串连接成一个字符串:

>>> import re
>>> re.findall(r'\d+', "hello I am in 12th grade but i am 230 years old")
['12', '230']
>>> ''.join(re.findall(r'\d+', "hello I am in 12th grade but i am 230 years old"))
'12230'

BTW,您可以将filterstr.isdigit一起使用,而不是使用正则表达式:

>>> ''.join(filter(str.isdigit, "hello I am in 12th grade but i am 230 years old"))
'12230'

<强>更新

正如Donkey Kong评论的那样,您也可以使用re.sub删除非数字字符:

>>> re.sub(r'\D+', '', "hello I am in 12th grade but i am 230 years old")
'12230'

但是,有了这个,您无法检查是否有数字。

答案 1 :(得分:0)

我不明白在将用户输入后的值手动分配给str1时,您打算做什么。

import re

def main():
    str1 = input("Enter a String: ")
    person = re.findall('\d+', str1)
    print(''.join(person) if person else '0')

main()

答案 2 :(得分:0)

香草版:

def main():
    str1 = 'ABCD12'
    str1 = input("Enter a String: ")
    str1 = "3158 reviews"
    person = ''.join(filter(str.isdigit, str1))
    if person:
        print(person)
    else:
        print("0")

main()