繁体   English   中英

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

[英]Extract integers in a string python re.findall

我有下面的代码,它工作正常,但是当我的字符串是“ hello I am in 12th grade but i am 230 years old ”时,我得到12230 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()

使用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'

顺便说一句,您可以使用带有str.isdigit filter来代替正则表达式:

>>> ''.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'

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

我不理解您打算在接受用户输入后手动将值分配给str1意图。

import re

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

main()

香草版本:

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM