Как проверить, содержит ли строка только буквенно-цифровые символы и тире?
Строка, которую я тестирую, может быть сопоставлена с [w-]+
. Могу ли я проверить, соответствует ли строка этому в Python, вместо того, чтобы иметь список запрещенных символов и тестировать для этого?
4 ответа:
Если вы хотите проверить строку на соответствие регулярному выражению, используйте библиотеку re
import re valid = re.match('^[\w-]+$', str) is not None
Python также имеет регулярное выражение:
import re if re.match('^[\w-]+$', s): ...
Или вы можете создать список разрешенных символов:
from string import ascii_letters if all(c in ascii_letters+'-' for c in s): ...
Без импорта какого-либо модуля, просто используя чистый python, удалите все none alpha, numeric, кроме тире.
string = '#Remove-*crap?-from-this-STRING-123$%' filter_char = lambda char: char.isalnum() or char == '-' filter(filter_char, string) # This returns--> 'Remove-crap-from-this-STRING-123'
Или в одной строке:
''.join([c for c in string if c.isalnum() or c in ['-']])