在python中检测输入字符串中所有数字的程序。

问题描述 投票:0回答:1

输入:

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 python-3.x python-3.7
1个回答
0
投票

你可以使用正则表达式来做这件事。

这里有一个非常类似的问题。在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

0
投票

你的string.split() 是输入字符串中的单词列表. I am 52 years old. The 48a24 is an example只有'52'是有效的数字,并且isdigit()的值为真。当some-string不包含任何字母或特殊字符时,'some-string'.isdigit()的值为true。

© www.soinside.com 2019 - 2024. All rights reserved.