我正在使用.isalpha函数来输入名称。它可以正常工作,但是每当我在姓名之间加上空格时,例如全名 John Doe ,就会给我错误。
到目前为止,我尝试过的
while not name.isalpha():
print('Entered Name is invalid')
name = input('Please Enter Your Name Sir: ')
if name.isalpha() or name.isspace():
print('Hello Mr.' + name)
select_mmenu('main-menu.txt')
我尝试将.isalpha和.isspace组合在一起,但似乎不起作用。需要最简单的方法来解决这个问题
答案 0 :(得分:4)
isalpha
测试字符串的每个成员是一个字母。 isspace
测试字符串的每个成员是否为空格字符。这些都不是您想要的。
相反,您可以这样做:
if all(lett.isalpha() or lett.isspace() for lett in name):
,如果每个字母都是一个字母或一个空格,它将通过。另外,您可以匹配一个正则表达式:
import re # at the top of your module
if re.match(r"[\s\w]+$", name):
可以说更干净,肯定更强大。方括号表示字符类,\s
是所有空格,\w
是所有单词字符,+
表示“匹配1次或多次”,而$
是字符串的结尾。 [\s\w]+$
的意思是“一个或多个空格或文字字符,之后什么也没有。
答案 1 :(得分:0)
它肯定会给您带来错误,因为isalpha()方法检查字符串是否仅包含字母字符。因此,如果放置空格,结果将返回false而不是true,并且会出现错误。
答案 2 :(得分:0)
谢谢您的回答。我不使用all()函数就解决了。我只是用最简单的基本Python循环解决了它
谢谢亚当·斯密(Adam Smith),因为您的回答使我有了解决该问题的想法
con = False
while con!=True:
l=0
strs = input('Enter your Name: ')
for i in strs:
if i.isalpha() or i.isspace():
l += 1
if l == len(strs):
con = True
break
else:
print('Wrong Input')
if con==True:
print(strs)
在此代码中,它基本上计算输入长度和字母以及空格长度(如果匹配)。否则while循环会继续。