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

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

Умение работать со строками и манипулировать ими является важным навыком для любого Python-разработчика. Строки, которые вы находите в интернете или в ваших файлах, часто требуют значительной обработки, чтобы их можно было анализировать. Одна из задач, с которыми вы часто будете сталкиваться, - это использование Python для удаления знаков пунктуации из строки.

Содержание

Использование Python для удаления пунктуации из строки с помощью Translate

Один из самых простых способов удалить пунктуацию из строки в Python - использовать метод str.translate(). Метод translate() обычно принимает таблицу перевода, которую мы создадим с помощью метода .maketrans().

Давайте посмотрим, как мы можем использовать метод .translate() для удаления пунктуации из строки в Python. Для этого мы импортируем встроенную библиотеку string, которая поставляется с атрибутом punctuation.

# Использование translate для удаления пунктуации
import string

a_string = '!hi. wh?at is the weat[h]er lik?e.'
new_string = a_string.translate(str.maketrans('', '', string.punctuation))

print(new_string)

# Возвращает: hi what is the weather like

Метод .maketrans() здесь принимает три аргумента, первые два из которых - пустые строки, а третий - список знаков пунктуации, которые мы хотим удалить. Это говорит функции заменить всю пунктуацию на None.

Что такое string.punctuation в Python?

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

Если вам интересно, какая пунктуация включена в string.punctuation, давайте быстро посмотрим:

print(string.punctuation)

# Возвращает: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

Использование Python для удаления пунктуации из строки с помощью регулярных выражений (regex)

Библиотека регулярных выражений Python, re, кажется, может делать практически все – включая удаление пунктуации из строки!

Регулярные выражения отличны тем, что поставляются со множеством полезных классов символов, которые позволяют нам выбирать различные типы символов. Например, \w\s ищет слова или пробелы. Мы можем выбрать противоположное (т.е. все, что не является словом или пробелом) с помощью символа ^. Это позволяет нам выбрать все, что не является словом или пробелом, что в нашем случае выбирает знаки пунктуации.

Давайте посмотрим, как мы можем использовать regex для удаления пунктуации в Python:

# Использование regex для удаления пунктуации
import re

a_string = '!hi. wh?at is the weat[h]er lik?e.'
new_string = re.sub(r'[^\w\s]', '', a_string)

print(new_string)

# Возвращает: hi what is the weather like

Это отличный подход, который ищет все, что не является буквенно-цифровым символом или пробелом, и заменяет его пустой строкой, тем самым удаляя его.

Использование Python для удаления пунктуации из строки с помощью str.replace

Метод str.replace() облегчает замену одного символа. Например, если вы хотите заменить только один знак пунктуации, это было бы простым и понятным решением.

Допустим, вы хотите заменить только символ ! из нашей строки, мы могли бы использовать метод str.replace() для достижения этой цели. Давайте посмотрим как:

# Использование str.replace для удаления одного знака пунктуации
a_string = '!hi. wh?at is the weat[h]er lik?e.'
new_string = a_string.replace('!', '')

print(new_string)

# Возвращает: hi. wh?at is the weat[h]er lik?e.

Здесь мы добавили метод .replace() к нашей строке. Первый параметр - это строка для замены, которая в данном случае является нашим символом !. Второй параметр - это то, на что его заменить, что в данном случае является пустой строкой.

В следующем примере вы узнаете, как использовать цикл for для замены всех знаков пунктуации в строке.

Использование Python для удаления пунктуации из строки с помощью цикла for

В предыдущем разделе руководства вы узнали, как использовать метод str.replace() для удаления одного знака пунктуации. В этом разделе мы повторим этот пример, но используем цикл for, чтобы удалить каждый знак пунктуации.

Давайте посмотрим, как мы можем сделать это в Python:

# Использование цикла for для удаления всех знаков пунктуации
import string

a_string = '!hi. wh?at is the weat[h]er lik?e.'

for character in string.punctuation:
    a_string = a_string.replace(character, '')

print(a_string)

# Возвращает: hi what is the weather like

Одна из вещей, которую следует отметить здесь, это то, что мы перезаписываем нашу исходную строку. Мы не можем назначить новую строку, так как она будет постоянно заменять саму себя.

Теперь, когда вы изучили несколько методов, давайте посмотрим, какой из этих методов самый быстрый.

Какой самый быстрый способ удалить пунктуацию из строки Python?

В этом руководстве вы изучили три различных метода удаления пунктуации из строки в Python. Давайте посмотрим, какой из этих методов самый быстрый.

Для этого теста мы создали строку длиной более 1,000,000,000 символов и удалили всю пунктуацию из строки с помощью Python.

Какой самый быстрый способ удалить пунктуацию из строки в Python? Метод str.translate() является самым быстрым способом удаления пунктуации из строки в Python – иногда до 40 раз быстрее!

Конечно, скорость - это не все, но поиск кода, который значительно замедляет вашу программу, часто приводит к худшему пользовательскому опыту.

Часто задаваемые вопросы

Что такое string.punctuation в Python?

Python поставляется со встроенной библиотекой string, которая включает все общие знаки пунктуации, используя атрибут string.punctuation. Включены: !"#$%&'()*+,-./:;<=>?@[]^_`{|}~

Как заменить пунктуацию пробелом в Python?

Самый простой способ заменить пунктуацию пробелом в Python - использовать метод .translate() с библиотекой string.punctuation. Просто напишите: a_string.str.maketrans(dict.fromkeys(string.punctuation, ' ')).

Заключение

В этой статье вы узнали, как удалить пунктуацию из строки Python. Вы узнали, как это сделать с помощью метода str.translate(), а также регулярных выражений. Вы также узнали, как это сделать с помощью метода .replace(), а также с помощью цикла for. Наконец, вы узнали, какой из этих методов самый быстрый.

Чтобы узнать больше о методе str.translate(), ознакомьтесь с официальной документацией здесь.

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

Чтобы узнать больше о связанных темах, ознакомьтесь с руководствами ниже:

Last updated