检查输入是否在Python 3中正确格式化

时间:2016-10-24 00:22:43

标签: python

所以我已经被分配了一个任务(显然)来检查用户输入的输入是否格式正确,方式是AA99AAA(其中A是字母,9是0到9之间的数字) 。所以对于输入中的第一个字符,它必须是一个字母或python会返回某种错误等等,你就明白了。我不知道从哪里开始,我已经试过四处寻找并找不到任何东西 - 我想我只是不知道它是什么我在寻找对于。任何指针都将非常感谢,谢谢!

3 个答案:

答案 0 :(得分:2)

为此,您可以将字符串拆分为3个部分(第一组字母,数字,然后是第二组字母)。然后,您可以使用s.isalpha()s.isnumeric()

例如:

while True:
    c=input('Password: ')
    if len(c)==7 and c[:2].isalpha() and c[2:4].isnumeric() and c[4:].isalpha():
        break
    else:
        print('Invalid input')
print('Valid input')

答案 1 :(得分:1)

您是否可以提供有关该问题的更多信息,您提供的格式是否与您尝试匹配的格式相符? AA99AAA,所以2-alpha,2-numeric,3-alpha?

我可以在这里采用两种方法,一种方法是使用正则表达式匹配[\w]{2}[\d]{2}[\w]{3}之类的东西,或者你可以遍历字符串(回想一下字符串是字符数组) )。

对于这种方法,您必须生成子字符串以隔离您感兴趣的部分。所以..

for c in user_input[0:2]:
    if c.isdigit:
        print('Invalid Input')
for c in user_input[3:5]:
...
...

肯定会有更多的pythonic方法来解决这个问题,但这应该是足以帮助您正式化解决方案的信息。

答案 2 :(得分:1)

我终于做到了!大约一个小时后......

所以我用[]格式化和.isdigit / .isalpha来检查代码的每个部分,就像上面推荐的那样,但是我的方式略有不同:

while True:
regNo = input("Registration number:")
if len(regNo) != 7:
    print("Invalid Registration Number! Please try again")
elif regNo[:2].isdigit():
    print("Invalid Registration Number! Please try again!")
elif regNo[2:4].isalpha():
    print("Invalid Registration Number! Please try again!")
elif regNo[4:].isdigit():
    print("Invalid Registration Number! Please try again!")
else:
    break

希望这有助于其他任何偶然发现此问题的人!