所以我想要的是让我的代码理解我的输入是否有数字,如果它确实是输出“正确”但是如果没有那么它会输出“不正确”怎么能我实际上做了这个工作。所以它知道输入中是否有整数。任何帮助表示赞赏
import re
yourString=input()
number = re.search(r'\d+', yourString).group()
if number == True:
print("Correct")
else:
print("Incorrect")
答案 0 :(得分:2)
您可以使用str.isdigit,re.search或内置字符串对float和int等转化进行编号:
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')
答案 1 :(得分:2)
根据https://docs.python.org/3/library/re.html#match-objects,你有一点微妙的错误。
声明不应该if number == True:
它应该是if number:
,原因是如果匹配任何内容,则值为True
,如果有,则为None
没有比赛。
即
import re
yourString=input()
number = re.search(r'\d+', yourString)
if number:
print("Correct")
group = number.group()
else:
print("Incorrect")
注意,有些奇怪
import re
yourString=input()
number = re.search(r'\d+', yourString)
if number:
print(number == True)
group = number.group()
else:
print("Incorrect")
打印为false,因此number不是值true,它会覆盖__bool__
。有关详细信息,请参阅https://docs.python.org/3/reference/datamodel.html#object.bool
答案 2 :(得分:0)
您正在寻找的正则表达式是:\w*[0-9]+\w*
。它接受包含至少一位数的任何内容。
\w*
与[a-zA-Z0-9_]*
相同,这意味着它将匹配任何大写/小写字母,数字或_
。它可以在字符串
[0-9]+
匹配0到9之间的一对多数字。
实际上,如果您的目的只是检查字符串是否有数字,那么您最好只使用[0-9]+
,这与您最初发布的内容相同。
您可以尝试使用此网站regex101.com
创建正则表达式