如何检查字符串是否包含特殊字母?

2024-05-15 17:26:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构建一个程序,它将密码作为字符串,并通过几个因素检查其强度。我想检查输入的字符串是否包含特殊字符(如%、$、#等),但到目前为止,我还无法确定。最好的方法是什么?

编辑:我不是在寻找一个特定的角色。我需要搜索字符串以确定它是否有某种非字母、非数字字符。

编辑2:我想不做循环。


Tags: 方法字符串程序角色编辑密码字母数字
3条回答

你必须把它放入一个for循环来检查特殊字符,我认为你需要列出一个包含所有字符的列表,然后像这样测试它,但这是你需要的基本代码!把打印位换成你需要做的任何事!

password = "VerySecurePassw0rd"
if "%" in password:
    print( "Your Password has a special character in it!")

if "%" not in password:
    print ("Your Password does not have a special character in it!")

编辑:

或者你可以用上面的“else”

如果不使用循环,我不确定您是否可以使用“elif”,但它不是很有效

password = "VerySecurePassw0rd"

if "%" in password:
    print ("Your Password has a special character in it!")
elif "$" in password:
    print( "Your Password has a special character in it!")
elif "#" in password:
    print ("Your Password has a special character in it!")

你也可以试试这个:

if "%" and "$" in password:
    print("Your Password has a 2 special characters in it!")

我认为那应该管用

你可以用正则表达式!

>>> import re
>>> s='Hello123#'
>>> re.findall('[^A-Za-z0-9]',s)
['#']
>>> if re.findall('[^A-Za-z0-9]',s):print True
... 
True

快乐编码!

希望有帮助!

如您所述,您不想使用循环,而且可能从未使用过regex,那么列表理解如何?

import string

all_normal_characters = string.ascii_letters + string.digits

def is_special(character):
  return character not in all_normal_characters

special_characters = [character for character in password if is_special(character)]

让我知道这是否有效,或者如果你需要更多的帮助!

相关问题 更多 >