Перейти к содержимому

Как убрать знаки препинания из строки python

  • автор:

Убираем конкретные символы из строки

С поомщью str.replace мы можем менять какие-то символы на другие. Если мы просто хотим убрать какие-то символы, тогда просто заменяем их на пустую строку. str.replace() будет применять замену ко всем найденным совподениям.

s="Hello$ Python3$" s1=s.replace("$", "") print (s1) # Результат: Hello Python3

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

s="Hello$ Python3$" s1=s.replace("$", "", 1) print (s1) # Результат: Hello Python3$

С помощью ' re.sub '

re. sub (pattern, repl, string, count=0, flags=0)

Возвращает строку, полученную путем замены крайних левых неперекрывающихся
совпадений с шаблоном в строке на значение repl. Если совпадения с шаблоном
не найдены, возвращается неизмененная строка
— Из документации Python'а

Если мы хотим убрать символы, то просто заменяем совпадения на пустую строку.

s="Hello$@& Python3$" import re s1=re.sub("[$|@|&]","",s) print (s1) # Результат: Hello Python3
  • Заменяемый шаблон → “[ $ | @ | & ]”
  • [ ] используется для определения множества
  • $ | @ | & → будет искать $ или @ или &
  • Заменяем на пустую строку
  • Если вышеуказанные символы заменяются найдены, то они заменяются на пустую строку

Убрать все символы, кроме букв

С помощью 'isalpha()'

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

Пример

s="Hello$@ Python3&" s1="".join(c for c in s if c.isalpha()) print (s1) # Результат: HelloPython

(c for c in s if c.isalpha())

Перед нами объект генератор, содержащий все буквы из строки:
s1=””.join(c for c in s if c.isalpha())

””.join будет соединять все символы в одну строку.

С помощью 'filter()'

s = "Hello$@ Python3&" f = filter(str.isalpha, s) s1 = "".join(f) print(s1)

f = filter(str.isalpha, s)

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

Функция filter() вернет итератор, содержащий все буквы переданной строки, а join() будем "склеиват" все элементы друг с другом.

С помощью 're.sub()'

s = "Hello$@ Python3$" import re s1 = re.sub("[^A-Za-z]", "", s) print (s1) # Результат: HelloPython

Рассмотрим s1 = re.sub(“[^A-Za-z]”, ””, s)

  • “[ A-Za-z]”* → Ищет все символы, кроме букв. Если в начале множества указать * , тогда к шаблону будут подходить все те символы, которые НЕ указаны в множестве. (для русских слов используйте [^А-Яа-я] - прим. ред.)
  • Все символы, удовлетворяющие шаблону будут заменены на пустую строку.
  • Все символы, кроме букв, будут убраны.

Убрать все символы, кроме букв и чисел

С помощью 'isalnum()'

isalnum() используется, когда мы хотим определить состоит строка только из чисел или букв.

Пройдемся по каждому символу строки, что-бы выявить нужные символы.

s = "Hello$@ Python3&" s1 = "".join(c for c in s if c.isalnum()) print(s1) # Результат: HelloPython3

С помощью 're.sub()'

s = "Hello$@ Python3&_" import re s1 = re.sub("[^A-Za-z0-9]", "", s) print(s1) # Результат: HelloPython3
  • “[^A-Za-z0–9]” → Этот шаблон будет искать все символы, кроме букв и цифр.
  • Все найденные символы будут заменены на пустую строку
  • Все символы, кроме букв и цифры убраны.

Убрать все числа из строки, с помощью регулярных выражений

С помощью 're.sub()'

s = "Hello347 Python3$" import re s1 = re.sub("[0-9]", "", s) print(s1) # Результат: Hello Python$
  • [0-9] - цифры от 0 до 9
  • re.sub(“[0–9]”, ””, s) - если есть совпадения, заменяем на пустую строку

Убираем все символы из строки кроме цифр

С помощью 'isdecimal()'

isdecimal() возвращает истину, если все символы строки являются цифрами, в противном случае возвращается ложь.

s = "1-2$3%4 5a" s1 = "".join(c for c in s if c.isdecimal()) print(s1) # Результат: 12345

Пороходим по каждому символу строки и проверяем и является ли он цифрой. "".join() соединяет все элементы.

С помощью 're.sub()'

s = "1-2$3%4 5a" import re s1 = re.sub("[^0-9]", "", s) print(s1) # Результат: 12345

Рассмотрим s1 = re.sub(“[^0–9]”, ””, s)

  • [^0-9] будет искать все символы кроме от 0 до 9
  • re.sub(“[^0–9]”, ””, s) все символы кроме цифр будут заменены на пустую строку.

С помощью 'filter()'

s = "1-2$3%4 5a" f = filter(str.isdecimal, s) s1 = "".join(f) print(s1) # Результат: 12345

Рассмотрим f = filter(str.isdecimal, s)

Функция filter() будет выполнять str.isdecimal метод для каждого символа, если он возвращает истину, то добовляет его в генератор. Затем генератор распаковывается в готовую строку с помощью метода join() .

Примечание

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

Рекомендуем хостинг TIMEWEB

Рекомендуем хостинг TIMEWEB

Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

По статье задано0 вопрос(ов)

Подписка на обсуждение 4
Подписка на раздел 73

Вам это нравится? Поделитесь в социальных сетях!

2 простых способа удалить знаки препинания в строках Python

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

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

Это те случаи когда мы чувствуем необходимость устранить или удалить знаки препинания в строке.

Давайте теперь посмотрим на различные способы удаления знаков препинания из String.

1. Удалите знаки препинания с помощью библиотеки регулярных выражений.

Python предоставляет нам библиотеку регулярных выражений для работы со всеми видами регулярных выражений и управления ими.

Нам нужно импортировать приведенную ниже библиотеку для работы с регулярным выражением -

import re 

Мы будем использовать re.sub(pattern, replacement, original_string) для удаления знаков препинания.

re.sub(pattern, replacement, original_string) 
  1. pattern: знаки препинания или шаблон выражений, которые мы хотим заменить.
  2. replacement: строка, которая будет заменять шаблон.
import re inp_str = "Hello! Folks, we are here to learn, grow and glow!!" print("Original string:\n" + inp_str) opt = re.sub(r'[^\w\s]','', inp_str) print("String after deletion of punctuation marks:\n" + opt) 

Кроме того, мы использовали метод re.sub() для замены знаков препинания заменой, предусмотренной как ‘ ‘, то есть пробелом.

Original string: Hello! Folks, we are here to learn, grow and glow!! String after deletion of punctuation marks: Hello Folks we are here to learn grow and glow 

2. Использование цикла Python для удаления знаков препинания.

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

  1. Сохраните все знаки препинания в строке.
  2. Создайте цикл for и создайте оператор if для каждой итерации так, чтобы при обнаружении символа пунктуации он заменялся пробелом.

Попробуем разобраться в описанном выше методе на примере.

import re inp_str = "Hello! Folks, we are here to learn, grow and glow!!" print("Original string:\n" + inp_str) marks = '''!()-[]<>;?@#$%:'"\,./^&*_''' for x in inp_str: if x in marks: opt_str = inp_str.replace(x, "") print("String after deletion of punctuation marks:\n" + opt_str) 
Original string: Hello! Folks, we are here to learn, grow and glow!! String after deletion of punctuation marks: Hello Folks, we are here to learn, grow and glow 

Как удалить все специальные символы, знаки препинания и пробелы из строки в Python?

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

>>> string = "Hello $#! People Whitespace 7331" >>> ''.join(e for e in string if e.isalnum()) 'HelloPeopleWhitespace7331'

Регулярные выражения также можно использовать для удаления любых буквенно-цифровых символов. re.sub (regex, string_to_replace_with, original_string) заменит все не алфавитно-цифровые символы пустой строкой. Например,

>>> import re >>> re.sub('[^A-Za-z0-9]+', '', "Hello $#! People Whitespace 7331") 'HelloPeopleWhitespace7331'

Как убрать знаки препинания в тексте что бы проверить его на палиндром?

Ввести с клавиатуры строку и определить является ли она полиндромом. Учесть что символы знаков припинания и разделения текста не учитываются при поиске полиндрома, учитываются только буквы и цифры. Причем ручной выбор символов будет низко оценен!

str_1 = input() print(f" is Polindrom" if str_1 == str_1[::-1] else f" is NOTT Polindrom") Условий вроде никаких нет кроме того что ручной выбор символов будет низко оценен Кони, топот, инок, Но не речь, а черен он. Идем, молод, долом меди. Чин зван мечем навзничь. Голод, чем меч долог? Пал, а норов худ и дух ворона лап. А что? Я лав? Воля отча! Яд, яд, дядя! Иди, иди! Мороз в узел, лезу взором Солов зов, воз волос. Колесо. Жалко поклаж. Оселок. Сани, плот и воз, зов и толп и нас. Горд дох, ход дрог. И лежу. — Ужели? Зол, гол лог лоз. И к вам и трем с смерти мавки.

Отслеживать

13.7k 12 12 золотых знаков 43 43 серебряных знака 75 75 бронзовых знаков

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *