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

时间:2017-03-25 15:24:33

标签: python python-2.7

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

编辑:我不是在搜索特定的角色。我需要搜索字符串以查找它是否具有某种非字母,非数字字符。

编辑2:我想在没有循环的情况下这样做。

3 个答案:

答案 0 :(得分:3)

您可以使用正则表达式!

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

快乐的编码!

希望它有所帮助!

答案 1 :(得分:0)

如你所说,你不想使用循环,并且可能从未使用正则表达式,列表理解怎么样?

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)]

让我知道这是否有效,或者您是否需要更多帮助!

答案 2 :(得分:-2)

你必须将他置于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!")

修改

或者您可以使用上面的“其他”

不使用循环我不确定你是否可以使用“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!")

我认为应该有效