如何在 python 中不接受空白和 space 仅 raw_input 回复?

How to not accept blank and space only raw_input reply in python?

newname = 3
while (newname>0):
    Create_Login =raw_input("Create login name: ")
    if Create_Login == (""):
        newname=newname-1
        print "error! Please do not leave it blank"
    elif Create_Login == (" ") or Create_Login == ("  ") or Create_Login == ("   ") or Create_Login == ("    ")  or Create_Login == ("     "):
        newname=newname-1
        print "error! Please do not spam the spacebar!"
    else:
        newname=-2
if newname!=-2:
    #back to menu code and the rest...

我有这样的代码可以在我的程序中创建新用户,但是,对于

Create_Login =raw_input("Create login name: ")

它接受来自用户的任何类型的输入作为他们的用户名。我想限制 Create_Login 拒绝无效输入,例如

[ "", " ", "  ", "   ",...] #and so on

我该怎么做?

你试过isspace()了吗?

isspace() 检查字符串是否只是空格,而不需要像 strip()

那样创建新的字符串对象
if(not Create_Login or Create_Login.isspace()):
    print "User has not entered anything"

您也可以尝试 strip()。然而就像我之前说的,它会创建一个新的字符串对象。

strip() 删除前导空格和试用空格。所以它只会删除前导和尾随的空格,不会删除字符串中的空格。

Create_Login = raw_input("Create login name: ")
if not Create_Login.strip():
    print "User has not entered anything"

谢谢大家的关心~ 最近,我刚刚发现一个非常有用和简单的方法来解决这个问题。

#by doing .strip
Create_Login = raw_input('new username: ')
Create_Login = str(Create_Login.strip(' '))

此新行将 Create_login 读取为字符串并删除其中的所有 space 以创建不含 space.

的有效用户名
#e.g.: "A  B" = "AB", "   C" = "C", or "  "=""