Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从getpass提示符中删除\r字符_Python_Regex_Getpass - Fatal编程技术网

Python 如何从getpass提示符中删除\r字符

Python 如何从getpass提示符中删除\r字符,python,regex,getpass,Python,Regex,Getpass,我已经编写了一段代码,它实际上与Python中的patterregex相匹配。 我使用getpass库提示用户输入密码。但是如果用户输入了错误的密码[说“HH”-这是无效的密码]。一旦用户在输入密码后点击enter,get pass将使用“HH”和“enter as”[两种不同的输入]。 现在,我需要一种方法来找出如何将“\r”与作为输入传递分开 我已尝试使用strip函数删除'\r',但未成功 导入getpass 进口稀土 loopVar=True 而loopVar: password=get

我已经编写了一段代码,它实际上与Python中的patterregex相匹配。 我使用getpass库提示用户输入密码。但是如果用户输入了错误的密码[说“HH”-这是无效的密码]。一旦用户在输入密码后点击enter,get pass将使用“HH”和“enter as”[两种不同的输入]。 现在,我需要一种方法来找出如何将“\r”与作为输入传递分开

我已尝试使用strip函数删除'\r',但未成功

导入getpass
进口稀土
loopVar=True
而loopVar:
password=getpass.getpass(“输入密码:”)
password.rstrip('\r')
模式=重新匹配(r'(?=.{5,32}$)(?=.[A-Z])(?=.[A-Z])(?=.[0-9])(?=.[^A-Za-z0-9]),密码)
如果模式:
打印(“密码符合标准”)
loopVar=False
其他:
打印(“密码“+密码+”不符合规则”)
你太接近了:)

从以下位置修改代码:

password.rstrip('\r')

说明: 来自python

str.rstrip([chars]):返回带尾随的字符串的副本 删除字符

因为字符串在python中是不可变的,所以需要再次将此副本分配给变量

编辑: 当用户写入密码并按enter键时,会出现两个条目,一个条目有密码字符串,第二个条目是空白的enter代码“\r”,您可以添加if语句以过滤第二个输入示例:

password = getpass.getpass("Enter your password: ")

if password != '\r':  # filter out echo input
    password.rstrip('\r')
    pattern=re.match(r'(?=.{5,32}$)(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9])',password)

    if pattern:
        print ("The password mateches as per standards")
        loopVar=False
    else:
        print ("The password "+ password +" is not as per rules ")

也许可以添加另一个负前瞻以声明不能有空格字符
(?!.*\s)
如果您想在注册表模式中添加负前瞻,我尝试了,但没有成功。谢谢您的建议谢谢朋友!!!但我仍然面临同样的问题。它仍然将enter作为新的输入。你的意思是你想忽略仅输入的输入,即如果用户用空白密码按enter键?@Akash我编辑了答案,看看它是否解决了你将额外的enter作为新输入的问题我仍然看到\r被作为输入。。。我不确定为什么会自动执行此额外命令['\r'。输入密码:密码dd不符合规则输入密码:密码不符合规则输入密码:[提示agian输入有效输入]这是我看到的。。。
password = password.rstrip('\r')
password = getpass.getpass("Enter your password: ")

if password != '\r':  # filter out echo input
    password.rstrip('\r')
    pattern=re.match(r'(?=.{5,32}$)(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9])',password)

    if pattern:
        print ("The password mateches as per standards")
        loopVar=False
    else:
        print ("The password "+ password +" is not as per rules ")