我有以下代码正常工作,但当我的字符串为“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()
答案 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,您可以将filter
与str.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()