我需要检查输入字符串是否采用这种特定形式x,y
,因为我需要这些坐标。我把这作为我的输入问题:
x, y = input("Place wall in x,y give q to quit : ").split(",")
但如何检查用户是否实际以x,y
?
答案 0 :(得分:2)
import re
p = re.compile("^\d+,\d+$");
while True:
string = input("Place wall in x,y give q to quit : ")
if p.match(string):
break
然后,您可以像以前一样从string
获取值。
答案 1 :(得分:1)
如果你的字符串格式不正确(没有逗号,逗号太多......),解包将抛出ValueError
,因为split()
方法之后的数组大小不正确。所以你可以抓住它。
try:
x, y = input("Place wall in x,y give q to quit : ").split(",")
except ValueError:
print("Unexpected input")
答案 2 :(得分:1)
您可以使用正则表达式https://docs.python.org/3.5/library/re.html作为模式匹配的一般解决方案。
您也可以将尝试所需的数据转换为除此之外的块
try:
handle_input()
except Exception as e:
print ("input not correct")
答案 3 :(得分:0)
另一个答案,只是因为。
def check_input(s):
if s.strip() in ['q', 'Q']:
raise SystemExit("Goodbye!")
try:
x, y = s.split(',')
# Or whatever specific validation you want here
if int(x) < 0: raise AssertionError
if int(y) < 0: raise AssertionError
return True
except (ValueError, AssertionError):
return False
print(check_input("1,3")) # True
print(check_input("foo")) # False