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

В этом руководстве вы научитесь удалять специальные символы из строк с помощью Python. Зачастую при работе со строками вы столкнетесь со строками, содержащими специальные символы. Они могут вызывать проблемы при проведении текстового анализа, например, обработки естественного языка. Поэтому умение удалять специальные символы из строк является важным навыком.

Оглавление:

Удаление специальных символов с помощью Python isalnum

В Python есть специальный строковый метод .isalnum(), который возвращает True, если символ является буквенно-цифровым, и False в противном случае. Мы можем использовать его для перебора строки и добавления только буквенно-цифровых символов в новую строку.

# Удаление специальных символов с помощью .isalnum()

text = 'datagy -- is. great!'
new_text = ''

for character in text:
    if character.isalnum():
        new_text += character

print(new_text)

# Возвращает: datagyisgreat

Давайте рассмотрим, что мы здесь сделали:

  1. Создаем две строки: одну с исходным текстом и пустую

  2. Перебираем каждый символ в строке и проверяем, является ли он буквенно-цифровым с помощью метода .isalnum()

  3. Если символ буквенно-цифровой, добавляем его в новую строку. Если нет - ничего не делаем

Удаление специальных символов с помощью регулярных выражений Python

Библиотека регулярных выражений Python, re, предоставляет множество полезных методов для работы со строками. Один из этих методов - .sub(), который позволяет заменять одни строки на другие.

Преимущество библиотеки re в том, что не нужно точно указывать, какой символ заменить. Благодаря этому можно задавать диапазоны символов для замены или сохранения.

Например, чтобы сохранить все буквенно-цифровые символы и пробелы, мы просто говорим методу .sub() заменить все, кроме [^a-zA-Z0-9 ].

# Удаление специальных символов с помощью re.sub()
import re

text = 'datagy -- is. great!'
new_text = re.sub(r"[^a-zA-Z0-9 ]", "", text)

print(new_text)

# Возвращает: datagy  is great

Давайте разберем, что мы сделали:

  1. Загрузили строку в переменную

  2. Использовали метод re.sub() для замены. Функция принимает три аргумента:

    • Шаблон для замены (использовали ^, чтобы заменить все, кроме указанных символов)

    • Чем заменить символы

    • Строка, в которой производится замена

Удаление специальных символов с помощью функции Filter

Помимо цикла for, мы можем использовать функцию filter() для удаления специальных символов из строки.

Функция filter() принимает два параметра:

  1. Функцию для оценки

  2. Итерируемый объект для фильтрации

# Удаление специальных символов с помощью filter()
import re

text = 'datagy -- is. great!'
new_text = ''.join(filter(str.isalnum, text))

print(new_text)

# Возвращает: datagyisgreat

Разберем, как это работает:

  1. Используем функцию filter() для возврата объекта фильтра, включающего только буквенно-цифровые символы

  2. Используем метод str.join() для объединения символов без разделителей, преобразуя список в строку

Если вы хотите включить другие символы, например, пробелы, можно определить пользовательскую функцию:

# Удаление специальных символов с помощью filter()
import re

def remove_special_characters(character):
    if character.isalnum() or character == ' ':
        return True
    else:
        return False

text = 'datagy -- is. great!'
new_text = ''.join(filter(remove_special_characters, text))

print(new_text)

# Возвращает: datagy  is great

Почему этот подход работает:

  1. Определяем пользовательскую функцию, которая проверяет, является ли символ буквенно-цифровым или пробелом

  2. Возвращаем True, если условие выполняется, иначе False

  3. Благодаря этой оценке, мы фильтруем значения, не прошедшие проверку

Заключение

В этой статье вы научились удалять специальные символы из строк Python. Вы узнали, как это сделать с помощью метода .isalphanum(), библиотеки регулярных выражений re и функции filter(). Изучение этого навыка крайне важно, так как работа с текстовыми данными становится все более значимой.

Дополнительные ресурсы

  • Функции Python Ord и Chr: работа с Юникодом

  • Python: удаление пунктуации из строки (3 разных способа!)

  • Как удалить префикс или суффикс из строки в Python

  • Как удалить первый или последний символ из строки Python

Last updated