通过字符串过滤特定字符

时间:2016-11-28 13:44:25

标签: python-2.7

我是python的新手,想要在数字和特殊字符的字符串中过滤我正在使用的内容打印出是(如果有数字或特殊字符)和否(如果没有)这样的人物) 这就是我现在使用的内容:

name_letters="123456789/*-.,`~<>?\:;!@#$%^&*()-_=+{}[]"
name= '123456'
def check_letters (text,char):

    count= 0
    for char in name:
     let= text[count]
     if name_letters== let:
        print('Yes')
     else:
        print("No")
     count+=1

for char in name_letters:
    check_letters(name,name_letters)

出现的问题是:

  1. 在玩变量之后,它总是只返回是或否,而不是两者的变体

  2. 这不是一个大问题,但循环运行的时间超过了

1 个答案:

答案 0 :(得分:0)

我认为过滤器不是您正在寻找的词,而是更多的检查它是否存在。因此,您可以使用built-in any()函数查看字符串内是否有任何字符匹配。

使用in运算符,您可以检查字符串中是否存在单个字符:

'$' in string       # found
'$' not in string   # not found

在代码中处理此问题的pythonic方法如下所示:

#Returns boolean True/False if any character exists in string
def check_letters(string, characters):
    charset = set(characters)
    return any((c in charset) for c in string)

print "Yes" if check_letters(name, name_letters) else "No"