检查Python中的字符串是否为特定形式

时间:2016-12-10 19:38:43

标签: python python-3.x

我需要检查输入字符串是否采用这种特定形式x,y,因为我需要这些坐标。我把这作为我的输入问题:

x, y = input("Place wall in x,y give q to quit : ").split(",")

但如何检查用户是否实际以x,y

的形式提供

4 个答案:

答案 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