输入:
I am 52 years old. The 48a24 is an example.
输出:
52, 48, 24
这是我的代码。
string=''
string=input()
def finddigits(string):
digits=''
string.split()
for i in string:
if i.isdigit():
digits += i
return digits
res = [int(i) for i in string.split() if i.isdigit()]
print(finddigits(string))
但我的输出与我想要的不一样
你可以使用正则表达式来做这件事。
这里有一个非常类似的问题。在python的正则表达式中循环匹配
你只需要一个与上面答案中的Reg表达式稍微不同的表达式。
一个regex字符串。([0-9]+)
会给你你想要的答案。
研究一下上面的regex。
()
是用于捕获一个组,这是您希望作为输出的一段输入。[]
是一个regex类。0-9
指0到9之间的任何数字。+
之后 []
意味着有1个或更多的等级匹配。所以在这种情况下 [0-9]
是指匹配任何一个数字。[0-9]+
匹配任何数字,以及之后的任何数字。
你可以在这个网站上测试你的正则表达式。https: /regex101. com.
把代码给我就行了。
import re;
s = "I am 52 years old. The 48a24 is an example"
pattern = re.compile(r'([0-9]+)');
for group in re.findall(pattern, s):
print(group)
给予输出。
52
48
24
你的string.split() 是输入字符串中的单词列表. I am 52 years old. The 48a24 is an example
只有'52'是有效的数字,并且isdigit()的值为真。当some-string不包含任何字母或特殊字符时,'some-string'.isdigit()的值为true。