Python 如何使.isalnum()方法仅对特定字符返回True?
我正在用几个属性编写一个密码分析器,其中一个属性是用户的密码不能有特殊字符(@$%^&*),除了(感叹号)和(下划线)。为此,我使用了Python 如何使.isalnum()方法仅对特定字符返回True?,python,Python,我正在用几个属性编写一个密码分析器,其中一个属性是用户的密码不能有特殊字符(@$%^&*),除了(感叹号)和(下划线)。为此,我使用了.isalnum()方法,但我无法找到一种方法使其在时不返回True或与任何其他特殊字符一起使用(例如:Python$返回False,但Python$返回True)。 这是我的密码: password = input('Enter a password: ') if not password.isalnum(): if '_' in password or
.isalnum()
方法,但我无法找到一种方法使其在时不返回True或与任何其他特殊字符一起使用(例如:Python$返回False,但Python$返回True)。
这是我的密码:
password = input('Enter a password: ')
if not password.isalnum():
if '_' in password or '!' in password:
pass
else:
print('Your password must not include any special characters or symbols!')
这是一种方式。更换
和\uu
使用空字符串,然后使用isalnum()
进行检查
最直观的方法是检查每个字符
if not all(c.isalnum() or c in '_!' for c in password):
print('Your password must not include any special characters or symbols!')
另一种检查方法是使用正则表达式
重新导入
x=输入('输入密码:')
t=完全匹配('[A-Za-z0-9_!]+',x)
如果不是t:
打印('您的密码不得包含任何特殊字符或符号!')
通过删除所有允许的特殊字符,即\u
和代码>:
password.replace('_', '').replace('!','')
现在只剩下检查字母数字字符(.isalnum()
)。OP希望Python$\ucode>正常。@mari和No,除了\u
和之外,他们不需要特殊字符代码>。这个问题的措辞令人困惑。这将有助于解释这段代码是如何工作的。只要一两句就可以了。请注意,str.isalnum()
适用于所有Unicode,但[a-Za-z0-9]
仅适用于ASCII\w
更接近(包括下划线),但我不确定它是否等效。
def is_pass_ok(password):
if password.replace('_', '').replace('!','').isalnum():
return True
return False
password = input('Enter a password: ')
if not is_pass_ok(password):
print('Your password must not include any special characters or symbols!')
password.replace('_', '').replace('!','')