Как удалить специальные символы из строки в Python?
В Python строки являются неизменяемыми объектами. В данном случае неизменяемость означает, что значение строки не может быть изменено после присваивания, но может быть присвоено новое значение. Язык Python - это высокоуровневый язык и предоставляет много инструкций для внесения изменений в строку. Мы можем использовать эти инструкции и для удаления специальных символов из строки в Python.
Хотите научиться программированию на языке Python, но не знаете, с чего начать? Мы собрали для вас лучшие курсы Python для начинающих на одной странице! Посетите эту страницу, чтобы получить доступ к образовательным ресурсам от ведущих онлайн-платформ и начать свой путь в программировании уже сегодня!
Мы можем использовать следующие методы для удаления специальных символов из строки в Python:
- Метод isalnum().
- Использование регулярных выражений (Regex) в Python.
- Метод replace().
- Метод filter().
- Метод translate().
Рассмотрим, как использовать все эти методы для удаления специальных символов из строки в Python с примерами.
Метод 1: Используя метод str.isalnum()
Метод string.isalnum() возвращает значение True
, если все символы в строке являются буквами или цифрами, и возвращает значение False
, если он находит в строке какой-либо специальный символ. Мы можем использовать это свойство для удаления всех специальных символов. Ниже приведен пример:
# Строка со специальными символами
special_string="spe@#$ci87al\*&"
print("Строка до преобразования: ",special_string)
# Создание списка с обычными символами с использованием метода isalnum()
# использование функции join() для преобразования списка в строку
normal_string="".join(ch for ch in special_string if ch.isalnum())
# вывод обычной строки
print("Строка после преобразования:",normal_string)
- Функция
".join"
в приведенном выше примере используется для объединения всех элементов из списка, чтобы создать строку со следующим синтаксисом:
connector.join(iterable)
Итерируемый объект может быть списком, словарем или кортежом, а "соединитель" имеет тип строка и вставляется между каждым элементом итерируемого объекта, чтобы создать новую строку.
- char for char in special_string if char.isalnum() создает список обычных символов, выполняя метод isalnum() для каждого символа строки отдельно.
- Генератор списка, используемый в приведенном выше примере, может быть упрощен следующим образом:
# Строка со специальными символами
special_string="spe@#$ci87al\*&"
print("Строка до преобразования: ",special_string)
# Объявление списка
sample_list=[]
# Итерация по строке с помощью цикла for
for i in special_string:
# Проверка, если символ в списке не является специальным символом
if i.isalnum():
# Если символ не является специальным, добавьте его в список
sample_list.append(i)
# Объединение элементов в списке для создания строки
normal_string="".join(sample_list)
print("Строка после преобразования:",normal_string)
Приведенный выше код является упрощенной версией предыдущего примера, использованного для удаления специальных символов из строки в Python. sample_list - это список обычных символов, выбранный с помощью функции isalnum().
Для обоих примеров вывод будет следующим:
Строка до преобразования: spe@#$ci87al\*&
Строка после преобразования: speci87al
Метод 2: Использование метода replace()
Метод replace() в Python можно использовать для удаления определенных специальных символов из строки. Синтаксис метода replace():
string.replace(char_to_be_replaced, char_to_be_replaced_with)
Метод replace() заменяет символ в строке другим символом. Если символ, который нужно заменить, не найден в строке, то replace() не производит никаких изменений. Используя это свойство, мы можем удалить определенные специальные символы из строки. Ниже приведен пример:
# Строка со специальными символами
special_string="spe@#$ci87al\*&"
print("Строка до преобразования: ",special_string)
# Список удаляемых специальных символов
special_characters=['@','#','$','\*','&']
normal_string=special_string
for i in special_characters:
# Замените специальный символ пустым символом
normal_string=normal_string.replace(i,"")
# Вывод строки после удаления специальных символов
print("Строка после преобразования:",normal_string)
В приведенном выше примере специальные символы в строке заменяются пустым символом в цикле for, который использует все специальные символы, которые нужно удалить из списка.
Вывод для приведенного выше примера:
Строка до преобразования: spe@#$ci87al\*&
Строка после преобразования: speci87al
Метод 3: Использование регулярных выражений
Регулярные выражения формируют паттерн, который можно использовать для поиска специальных символов в строке. Для использования регулярных выражений в Python необходимо импортировать пакет re
.
Модуль re
предоставляет нам множество методов для работы с регулярными выражениями. Чтобы удалить специальные символы из строки в Python, мы можем использовать метод re.sub()
. Метод имеет следующий синтаксис,
re.sub(шаблон_регулярного_выражения, заменяемый_символ, строка, максимальное_число_замен, флаги)
- шаблон_регулярного_выражения - это регулярное выражение, используемое для сопоставления символов в строке.
- заменяемый_символ - это символ, на который мы заменяем символы, соответствующие регулярному выражению.
- строка - это строка, в которой мы ищем и заменяем символы.
- максимальное_число_замен показывает максимальное число замен, которые мы можем сделать после нахождения символов, соответствующих регулярному выражению.
- флаги представляют флаги регулярных выражений, используемые для изменения метода поиска. Некоторые полезные флаги:
- re.IGNORECASE используется для поиска символов в верхнем и нижнем регистрах
- re.ASCII используется для поиска только символов ASCII.
- re.MULTILINE может быть использован для того, чтобы символы ^ и $ соответствовали также строкам. Обычно символы ^ и $ соответствуют только началу и концу слов.
Ниже приведен пример того, как мы можем удалить все специальные символы из строки в Python с помощью метода re.sub():
# Импорт модуля re
import re
# Строка с специальными символами
special_string="spe@#$ci87al\*&"
print("Строка до преобразования: ",special_string)
# Использование регулярных выражений с методом sub()
normal_string =re.sub("[^A-Z]", "", special_string,0,re.IGNORECASE)
print("Строка после преобразования: ",normal_string)
[^A-Z] используется для поиска всех символов, которые не находятся между А и Z. Флаг re.IGNORECASE используется для применения регулярного выражения как к символам в нижнем, так и в верхнем регистре. Символ, соответствующий шаблону, заменяется на пустую строку, и, наконец, новая строка с удаленными специальными символами возвращается методом re.sub(). Третий аргумент, максимальное_число_замен, получает значение 0, чтобы соответствовать всем символам регулярного выражения.
Аргументом по умолчанию для параметров максимальное_число_замен и флагов является 0. В случае параметра максимальное_число_замен значение по умолчанию 0 означает, что функция должна подходить ко всем случаям, а в параметре флагов 0 означает, что не используются флаги.
Результат выводится на экран в следующем виде:
Строка до преобразования: spe@#$ci87al\*&
Строка после преобразования: special
Несколько других шаблонов регулярных выражений, которые могут удалить специальные символы из строки в Python:
- /[^\w\s]/gi
- \W+ - данный шаблон также включает числа в результат.
- [@#$*&87]
Метод 4: Использование filter()
Метод filter() используется для фильтрации итерируемого объекта в соответствии с условиями, заданными в функции. Это свойство используется для удаления специальных символов из строк в Python. Синтаксис метода filter():
filter(функция, итерируемый_объект)
Метод filter()
возвращает итерируемый объект с отфильтрованными результатами.
Мы можем использовать метод filter() вместе с функцией isalnum()
для удаления всех специальных символов из строки. Ниже приведен пример:
# Строка с специальными символами
special_string="spe@#$ci87al\*&"
print("Строка до преобразования: ",special_string)
# Использование функции filter и isalnum для удаления специальных символов
# Преобразование итерируемого объекта в строку с помощью метода join()
normal_string=''.join(filter(str.isalnum, special_string))
print("Строка после преобразования: ",normal_string)
В приведенном выше примере функция filter() будет вызывать функцию isalnum()
для каждого символа из special_string и вернет список, из которого будут удалены все специальные символы. Затем список преобразуется в строку с помощью функции join()
.
Метод filter()
также можно использовать с лямбда-функцией для удаления определенных специальных символов из строки. Давайте рассмотрим пример, как это можно сделать:
# Строка с специальными символами
special_string="spe@#$ci87al\*&"
# Список специальных символов
special_characters=['@','#','$','\*','&']
print("Строка до преобразования: ",special_string)
# Использование лямбда-функции для проверки, содержится ли специальный символ в списке
# Преобразование списка в строку с помощью метода join()
normal_string = "".join(filter(lambda char: char not in special_characters , special_string))
print("Строка после преобразования: ",normal_string)
В приведенном выше примере специальные символы, которые мы должны удалить из строки, хранятся в списке с именем special_characters. Функция filter() используется для итерации по каждому элементу в строке. И лямбда-функция используется, чтобы проверить, является ли символ специальным символом. Если специальный символ присутствует, лямбда-функция вернет false, и символ будет исключен из результата. Этот метод удаляет все специальные символы из строки в Python.
Результат выводится на экран в следующем виде:
Строка до преобразования: spe@#$ci87al\*&
Строка после преобразования: special
Метод 5: Использование метода translate()
Метод translate() использует словарь или таблицу соответствий для замены всех символов, находящихся в позициях ключей таблицы, на символы, находящиеся в позициях значений таблицы. Это свойство используется для удаления специальных символов из строк в Python.
Синтаксис метода translate():
string.translate(table, characters_to_be_deleted)
- Первый параметр - это таблица соответствий, созданная с помощью функции maketrans().
- Второй параметр является необязательным и представляет символы, которые должны быть удалены из модифицируемой строки.
Синтаксис создания таблицы с помощью функции maketrans():
str.maketrans(first, second, third)
В Python ключевое слово str используется для обозначения строки.
- Если есть один аргумент, то он должен быть словарем типа dict.
- Если есть два аргумента, то оба должны быть типа str и должны быть одинаковой длины. Функция maketrans() будет сопоставлять каждый символ из первой строки со всеми символами второй строки.
- Если есть три аргумента, символы в аргументе third будут сопоставлены со значением None.
В следующем примере показано, как создать таблицу соответствий с помощью функции maketrans() с двумя аргументами:
# первая строка
first = "hello"
# Вторая строка
second = "byeee"
# Создание словаря (или таблицы) с помощью maketrans()
table = str.maketrans(first, second)
print(table)
В приведенном выше примере создается словарь или таблица, в которой каждый символ первой строки отображается на символы второй строки. Результатом для данного примера будет:
{104: 98, 101: 121, 108: 101, 111: 101}
Метод maketrans() сохраняет символы как их соответствующие значения ASCII. Например, ASCII значение для h и b равно соответственно 104 и 98.
Рассмотрим, как использовать эту таблицу соответствий, созданную с помощью функции maketrans(), для удаления определенных специальных символов из строки в Python,
# импорт модуля string
import string as st
# Строка со специальными символами
special_string = "spe@#$ci87al\*&"
# Список специальных символов, которые нужно удалить
special_characters = ['@', '#', '$', '\*', '&']
print("Строка до преобразования: ", special_string)
# Создание словаря для таблицы соответствий
dict_for_table = {special_char: '' for special_char in st.punctuation}
# Создание таблицы соответствий с помощью функции maketrans()
table = str.maketrans(dict_for_table)
# Удаление специальных символов с помощью метода translate()
normal_string = special_string.translate(table)
print("Строка после преобразования: ", normal_string)
- string.punctuation - это строка со всеми специальными символами. Она используется для создания словаря специальных символов в качестве ключей и пустых значений в качестве значений.
- Метод maketrans() используется для создания таблицы из созданного словаря.
- Наконец, метод translate() удаляет специальные символы, заменяя их пустыми значениями, и возвращает новую строку.
Примечание: значение string.puntuation - ```!"#$%&'()*+, -./:;<=>?@[]^_{|}~
Результат данного примера будет следующим:
Строка до преобразования: spe@#$ci87al\*&
Строка после преобразования: speci87al
Чтобы удалить все специальные символы из строки в Python, можно использовать следующий код:
# Импорт модуля string
import string
# Строка со специальными символами
special_string = "spe@#$ci87al\*&"
print("Строка до преобразования: ", special_string)
# Вызов метода translate()
normal_string = special_string.translate(str.maketrans('', '', string.punctuation))
# Вывод новой строки
print("Строка после преобразования: ", normal_string)
В этом примере string.punctuation задается в качестве третьего аргумента в функцию maketrans(), поэтому все символы в string.punctuation будут отображаться на None. Созданная таблица:
{33: None, 34: None, 35: None, 36: None, 37: None, 38: None, 39: None, 40: None, 41: None, 42: None, 43: None, 44: None, 45: None, 46: None, 47: None, 58: None, 59: None, 60: None, 61: None, 62: None, 63: None, 64: None, 91: None, 92: None, 93: None, 94: None, 95: None, 96: None, 123: None, 124: None, 125: None, 126: None}
Число в позиции ключа представляет значение ASCII специального символа. translate() использует эту таблицу, чтобы удалить все специальные символы из строки в Python.
При вызове метода translate() с использованием этой таблицы специальные символы будут удалены, заменены на пустые символы.
Примечание. В Python ключевое слово None используется для обозначения null или пустого значения.
Результат данного примера будет следующим:
Строка до преобразования: spe@#$ci87al\*&
Строка после преобразования: speci87al
Вывод
- Существует пять методов для удаления специальных символов из строк в Python.
- Метод str.isalnum() проверяет строку на наличие алфавитно-цифровых символов, и это свойство используется для удаления специальных символов.
- Метод replace() используется для замены специальных символов на пустые символы или null.
- Регулярные выражения соответствуют шаблонам специальных символов и удаляют специальные символы в Python.
- Метод filter() используется для вызова функции для каждого символа перечислимого объекта и использует предоставленное условие в функции для удаления специальных символов в Python.
- Метод translate() использует таблицу соответствий и заменяет специальные символы символами, находящимися в таблице соответствий.