В этом посте будет обсуждаться, как удалить не буквенно-цифровые символы из строки в Python.
1. Использование регулярных выражений
Простое решение — использовать регулярные выражения для удаления не буквенно-цифровых символов из строки. Идея состоит в том, чтобы использовать специальный символ \W
, который соответствует любому символу, не являющемуся символом слова.
1 2 3 4 5 6 7 8 9 |
import re if __name__ == '__main__': input = "Welcome, User_12!!" s = re.sub(r'\W+', '', input) print(s) # Добро пожаловатьПользователь_12 |
The \W
эквивалентен [^a-zA-Z0-9_]
, что исключает все цифры и буквы, а также символы подчеркивания. Если вам также нужно удалить символы подчеркивания, вы можете сделать так:
1 2 3 4 5 6 7 8 9 |
import re if __name__ == '__main__': input = "Welcome, User_12!!" s = re.sub(r'[^a-zA-Z0-9]', '', input) print(s) # WelcomeUser12 |
Если выражение используется несколько раз в одной программе, следует скомпилировать и сохранить результирующий объект регулярного выражения для повторного использования.
1 2 3 4 5 6 7 8 9 10 11 |
import re if __name__ == '__main__': input = "Welcome, User_12!!" pattern = re.compile('\W') s = re.sub(pattern, '', input) print(s) # Добро пожаловатьПользователь_12 |
2. Использование isalnum()
функция
Другой вариант — отфильтровать строку, совпадающую с isalnum()
функция. Возвращает true, если все символы в строке буквенно-цифровые, иначе false.
1 2 3 4 5 6 7 |
if __name__ == '__main__': input = "Welcome, User_12!!" s = ''.join(filter(str.isalnum, input)) print(s) # WelcomeUser12 |
Это эквивалентно:
1 2 3 4 5 6 7 |
if __name__ == '__main__': input = "Welcome, User_12!!" s = ''.join(c for c in input if c.isalnum()) print(s) # WelcomeUser12 |
Это все об удалении не буквенно-цифровых символов из строки в Python.
Также см: