def extractNumber(string):
for word in string.split():
try:
# The float() function accepts a decimal string.
# The int() function accepts an integer string.
return float(word)
except ValueError:
pass
number = extractNumber(input())
if number is not None:
print('Your number is: {}'.format(number))
else:
print('No number found')
您要查找的regex是:
\w*[0-9]+\w*
。它接受至少包含一个数字的任何内容。在\w*
与[a-zA-Z0-9_]*
相同,这意味着它将匹配任何小写/大写字母、数字或_
。它可以在字符串中出现0到多次[0-9]+
匹配从0到9的一到多个数字。在实际上,如果您的目的只是检查字符串是否有数字,那么只需使用
[0-9]+
这与您最初发布的内容相同。在您可以尝试使用此站点创建regex regex101.com
您可以使用str.isdigit、re.search或内置的字符串到数字转换,如float和int:
根据https://docs.python.org/3/library/re.html#match-objects你有一点小错误。在
语句不应该是
if number == True:
,它应该是if number:
,原因是如果有匹配的话,值数是测试的True
,如果没有匹配的话,则是None
。在即
注意,有点奇怪
^{pr2}$打印false,因此number不是true值,它重写
__bool__
。有关详细信息,请参见https://docs.python.org/3/reference/datamodel.html#object.bool相关问题 更多 >
编程相关推荐