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('!','')