Python从字母数字字符字符串中提取数字

Python从字母数字字符字符串中提取数字,python,regex,string,Python,Regex,String,如何在Python中以字符串形式打印数字?在下面的示例中,我可以打印6。如何将6和5一起打印?给我65 man = 'The man is 65 or older' print(man[11]) 我可以想出两种不需要硬编码索引的方法 str.split带str.isdigit 芬德尔酒店 正则表达式详细信息 请注意,如果只想返回不属于较大单词的数字,则应使用\b单词边界。例如,此处不计算3D。这段短代码如何 man = 'The man is 65 or older' numbers = li

如何在Python中以字符串形式打印数字?在下面的示例中,我可以打印6。如何将6和5一起打印?给我65

man = 'The man is 65 or older'
print(man[11])

我可以想出两种不需要硬编码索引的方法

str.split带str.isdigit 芬德尔酒店 正则表达式详细信息


请注意,如果只想返回不属于较大单词的数字,则应使用\b单词边界。例如,此处不计算3D。

这段短代码如何

man = 'The man is 65 or older'
numbers = list(filter(str.isdigit, man.split(' ')))
print(numbers[0])

这些很好用,但我需要在同一行上的数字。选项2更好,因为如果数字在字符串中的不同位置,它工作得非常好。@bulbus有趣。你为什么说选择2更好?对于“男人65岁,有三条腿”,输出是相同的。抱歉,我弄错了字符串。拆分以显示所有字符!您是对的,两个选项都会给出相同的结果。对我来说,一个问题是在选项2中使用\b。要解决OP的即时需要,您不需要\b运算符对。只有在“这位65岁的老人去看了一部3D电影”这样的情况下才会出现这种情况。在这种情况下,我们想要控制我们是得到[65]还是[65,3]。很明显,在OP.+1之前,这个问题还有其他限制,所以我认为我的答案没有错。他/她要求给我65分。@Ho0on按照你的逻辑,伙计[11:13]也应该是你满意的答案:
import re

numbers = re.findall(r'\b\d+\b', string)
print(numbers)
['65']
\b      # word boundary
\d+     # match 1 or more digits
\b      # word boundary
man = 'The man is 65 or older'
numbers = list(filter(str.isdigit, man.split(' ')))
print(numbers[0])