2016-11-28 13 views
-1

私はPythonを初めて使い、使用している瞬間に数値と特殊文字の文字列をフィルタリングしたいと思います(数字や特殊文字の場合)。 は、ここで私は、現時点で使用するものです(そのような文字がない場合のために):発生特定の文字列をフィルタリングする

name_letters="123456789/*-.,`~<>?\:;[email protected]#$%^&*()-_=+{}[]" 
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つのバリエーションはありません

  2. このない大きな問題が、それは

+0

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

をあなたのコードでこれを処理するためのニシキヘビの方法は、次のようになります== 'は"等しい "演算子です。したがって、最初のループの場合、 '123456789/* - 。、' '〜<>?\:;!@#$%^&*()-_ = + {} [] == 1'を比較しています。明らかにそれは同じではないので一致しません。 – manuzi1

答えて

0

に必要以上のループは私がフィルタは、あなたが探している言葉ではないと思いますが、それが存在する場合は、チェックをより長く実行します。したがって、built-in any()関数を使用して、文字列内で一致する文字があるかどうかを確認できます。オペレータに使用

は、単一の文字が文字列内に存在するかどうかをチェックすることができます: `

#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" 
関連する問題