HangOps.ru

Удаление специальных символов из строки Python

Как удалить специальные символы из строки в 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() использует таблицу соответствий и заменяет специальные символы символами, находящимися в таблице соответствий.

Источник

Python