Подтвердить что ты не робот

Как проверить, содержит ли строка только буквенно-цифровые символы и тире?

Строку, которую я тестирую, можно сопоставить с [\w-]+. Могу ли я проверить, соответствует ли строка в Python, вместо того, чтобы иметь список запрещенных символов и тестирование для этого?

4b9b3361

Ответ 1

Если вы хотите проверить строку на регулярное выражение, используйте re библиотеку

import re
valid = re.match('^[\w-]+$', str) is not None

Ответ 2

Python также имеет регулярное выражение:

import re
if re.match('^[\w-]+$', s):
    ...

Или вы можете создать список допустимых символов:

from string import ascii_letters
if all(c in ascii_letters+'-' for c in s):
    ...

Ответ 3

Чтобы проверить, содержит ли строка только буквенно-цифровые и тире, я бы использовал

import re
found_s = re.findall('^[\w-]+$', s)
valid = bool(found_s) and found_s[0] == s

Ответ 4

Без импорта какого-либо модуля только с использованием чистого python удалите любую альфа-цифру, кроме дефиса.

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