我无法接受输入以仅接受a-z和A-Z字母。这就是我想出来的
while(not(studentName == "END")):
studentName = input("What is the name of the student (END to finish) ")
if not re.match("^[a-z]*$", studentName):
print("Only letters are allowed")
elif len(studentName) == 0:
print("Insufficient characters. Please try again.")
else:
studentsNames.append(studentname)
然而,我只是想出了一个错误"未定义"。 我该怎么做:C
答案 0 :(得分:3)
我喜欢使用内置的字符串方法,而不是使用正则表达式。其中一个是str.isalpha()
,当在字符串上调用时,如果字符串仅包含 True
,则返回A-z
。所以而不是:
if not re.match("^[a-z]*$", studentName):
print("Only letters are allowed")
我只想写:
if not studentName.isalpha():
print("Only letters are allowed!")
答案 1 :(得分:0)
您需要导入re
模块,您必须将正则表达式更改为
if not re.match(r"^[A-Za-z]+$", studentName):
只需在python脚本的顶部输入以下代码即可。
import re
您的正则表达式"^[a-z]*$"
将匹配零个或多个小写字母。也就是说,它也匹配空字符串,它不会匹配字符串只有大写字母,如FOO
。
因此,对于所有不能为空字符串的字符串或仅包含小写字母的字符串,此if not re.match("^[a-z]*$", studentName):
将返回true
。
答案 2 :(得分:0)
您可以使用set和string.ascii_letters:
from string import ascii_letters
def is_all_characters(student_name):
return set(student_name) in set(ascii_letters)
答案 3 :(得分:0)
isalpha() 可满足此要求。
username = input("Enter Username: ")
if username.isalpha() is False:
print("Only Text allowed in Username")
else:
print("Welcome "+username)