Wie prüfe ich in Python, ob ein String nur bestimmte Zeichen enthält?

Wie prüfe ich in Python, ob ein String nur bestimmte Zeichen enthält?

Ich muss eine Zeichenfolge überprüfen, die nur a..z, 0..9 und enthält. (Punkt) und kein anderes Zeichen.

Ich könnte über jedes Zeichen iterieren und überprüfen, ob das Zeichen a..z oder 0..9 ist, oder. aber das wäre langsam.

Mir ist jetzt nicht klar, wie ich es mit einem regulären Ausdruck machen soll.

Ist das richtig? Können Sie einen einfacheren regulären Ausdruck oder einen effizienteren Ansatz vorschlagen?

#Valid chars . a-z 0-9 
def check(test_str):
    import re
    #http://docs.python.org/library/re.html
    #re.search returns None if no position in the string matches the pattern
    #pattern to search for any character other then . a-z 0-9
    pattern = r'[^\.a-z0-9]'
    if re.search(pattern, test_str):
        #Character other then . a-z 0-9 was found
        print 'Invalid : %r' % (test_str,)
    else:
        #No character other then . a-z 0-9 was found
        print 'Valid   : %r' % (test_str,)

check(test_str='abcde.1')
check(test_str='abcde.1#')
check(test_str='ABCDE.12')
check(test_str='_-/>"!@#12345abcde<')

'''
Output:
>>> 
Valid   : "abcde.1"
Invalid : "abcde.1#"
Invalid : "ABCDE.12"
Invalid : "_-/>"!@#12345abcde<"
'''

Antworten auf die Frage(6)

Ihre Antwort auf die Frage