Рубрики
Без рубрики

Как удалить все не алфавитные символы из строки?

💡 Резюме: Этот блог исследует шаги, чтобы удалить все символы не алфавита из данной строки. Модуль «Re» в Python обеспечивает регулярные операции выражения, для обработки текста. Один использует эти операции для манипулирования текстом в строках. Метод Compile () в сочетании с методом Sub () может удалить все символы не алфавита из заданной строки. https://youtu.be/3dirtaxzob0 … Как удалить все символы не алфавита из строки? Прочитайте больше “

Автор оригинала: Girish Rao.

💡 Резюме: Этот блог исследует шаги, чтобы удалить все не алфавитные символы из заданной строки. ‘Re’ модуль в Python Обеспечивает регулярные операции выражения, для обработки текста. Один использует эти операции для манипулирования текстом в строках. Компилировать () Метод в сочетании с sub () Метод может удалить все не спиртные символы из заданной строки.

Примечание : Все приведенные ниже решения были проверены с использованием Python 3.9.0b5.

Постановка проблемы

Представьте себе следующую искаженную струну в Python …

my_string = 'A !He#a"lt#hy D$os@e Of% O*m$e+ga_3 F#a$t#t@y-A%ci^d*s P&er D{a]y K\'ee(p)s T*he D^.oc+to&r A#w*ay.\nFl-a)x Se/:ed A;nd W]alre A? G@oo[d S\\our]ce Of O!m&eg^a_3 F#a$t#t@y-A%ci^d*s.'

Как избавиться от персонажей не алфавита для очистки строки?

'AHealthyDoseOfOmegaFattyAcidsPerDayKeepsTheDoctorAwayFlaxSeedAndWalnutsAreAGoodSourceOfOmegaFattyAcids'

Задний план

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

Хорошо! Достаточно разговоров, я понимаю !! Теперь покажу мне !!

В большинстве версий Python Модуль «Re» является частью стандартной библиотеки. Следует не забыть «импортировать» модуль «RE» перед его использованием. Решение, показанное ниже, сначала компилирует шаблон поиска. Затем скомпилированный объект работает на строке, чтобы получить желаемые результаты.

$ python
Python 3.9.0b5 (default, Oct 19 2020, 11:11:59) 
>>>
>>> ## Remember to import the 're' module. It is part of Python's Standard Library.
>>> import re
>>>   
>>> ## Compile the search pattern. 
>>> pattern = re.compile('[\W_0-9]+')
>>> 
>>> ## 'my_string' is the original garbled string. 
>>> my_string = 'A !He#a"lt#hy D$os@e Of% O*m$e+ga_3 F#a$t#t@y-A%ci^d*s P&er D{a]y K\'ee(p)s T*he D^.oc+to&r A#w*ay.\nFl-a)x Se/:ed A;nd W]alre A? G@oo[d S\\our]ce Of O!m&eg^a_3 F#a$t#t@y-A%ci^d*s.'
>>> 
>>> ## The 'pattern' object is used to apply the substitute function, to remove the
>>> ## non-alphabet characters from 'my_string'
>>> clean_string = pattern.sub('', my_string)
>>> 
>>> ## 'clean_string' is the 'cleaned' string, containing only alphanumeric characters.
>>> clean_string
'AHealthyDoseOfOmegaFattyAcidsPerDayKeepsTheDoctorAwayFlaxSeedAndWalnutsAreAGoodSourceOfOmegaFattyAcids'
>>> 

У оригинальной искаженной строки есть слова, которые подбираются, чтобы сделать значимое предложение. Слова имеют верблюдные символы для иллюстративных целей. После операции подстановки очищенная строка выделяется. Да, «пробелы» также удаляются, потому что «пробелы» являются неблагоприятными символами. Но есть ли что-то еще, что удалено?

Подожди минуту!! Вы имели в виду омега3 жирных кислот, верно?

Верный! Потрясающий читатель, возможно, заметил удаление числовых символов. Этот блог о Удаление персонажей не алфавита Отказ Алфавит персонажей – «А» к 'Z' и «А» к 'Z' Отказ Следовательно, код удаляет все, что не является буквенным, включая числовые символы. Но не бойся! Этот блог о том, чтобы дать читателю соответствующие инструменты и показывает их, как его использовать.

Ключ состоит в том, чтобы изменить шаблон поиска крошечный бит. Вот что [\ W_0-9] + ‘ Строка поиска означает.

  • Квадратные скобки «[] ' приложить один или несколько Классы персонажей Отказ Это указывает на набор классов символов или отдельных символов. Квадратные скобки говорят Модуль «Re» соответствовать «одному» символу из прилагаемого набора.
  • Шаблон '\ W' означает любой характер, который не является буквенно-цифровой или подчеркивание '_' Отказ Вот почему нужно включать '_' и '0-9' в пределах «[] ' , чтобы сказать 'Re' Для поиска всех несыповых персонажей.
  • Наконец, Regex Plus Оператор '+' рассказывает, чтобы соответствовать 1 или более предыдущему характеру.

Итак, чтобы удалить «не буквенно-цифровые» символы, можно использовать «[\ W _] + ' вместо [\ W_0-9] + ' , при составлении шаблона. Давайте посмотрим, как это работает.

$ python
Python 3.9.0b5 (default, Oct 19 2020, 11:11:59) 
>>>
>>> ## Again, remember to import the 're' module. It is part of Python's Standard Library.
>>> import re
>>> 
>>> ## Compile the search pattern. Note the difference from before, 
>>> ## i.e. '[\W_]+' instead of '[\W_0-9]+'
>>> pattern = re.compile('[\W_]+')
>>> 
>>> ## 'my_string' is the original garbled string. 
>>> my_string = 'A !He#a"lt#hy D$os@e Of% O*m$e+ga_3 F#a$t#t@y-A%ci^d*s P&er D{a]y K\'ee(p)s T*he D^.oc+to&r A#w*ay.\nFl-a)x Se/:ed A;nd W]alre A? G@oo[d S\\our]ce Of O!m&eg^a_3 F#a$t#t@y-A%ci^d*s.'
>>> 
>>> ## The 'pattern' object is used to apply the substitute function, to remove the
>>> ## non-alphabet characters from 'my_string'
>>> clean_string = pattern.sub('', my_string)
>>> 
>>> ## 'clean_string' is the 'cleaned' string, containing only alphanumeric characters now.
>>> ## Note the '3' in 'Omega3'
>>> clean_string
'AHealthyDoseOfOmega3FattyAcidsPerDayKeepsTheDoctorAwayFlaxSeedAndWalnutsAreAGoodSourceOfOmega3FattyAcids'
>>> 

Там!! Это выглядит намного лучше сейчас. Числовые символы теперь включены.

Приговор по-прежнему лоуоо-слово !!

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

  • Сплит () Встроенная функция, разбивает исходное предложение на пробелах. Это создает список слов. Оригинальное длительное предложение; А строка слов становится Список отдельных слов.
  • Слова все еще искажены. Re.sub () Работает на каждое слово, чтобы очистить его. Это приводит к списку, содержащему очищенные слова.
  • Далее Присоединяйтесь () Встроенная функция использует «Пространство» Персонаж, чтобы присоединиться к словам в этом списке.

Давайте посмотрим, как это работает.

$ python
Python 3.9.0b5 (default, Oct 19 2020, 11:11:59) 
>>>
>>> ## This is the original 
>>> my_>>> 
>>> ## Remember to import the 're' module. It is part of Python's Standard Library.
>>> import re
>>> 
>>> ## Compile the search pattern. 
>>> pattern = re.compile('[\W_0-9]+')
>>> 
>>> ## 'my_string' is the original garbled string. 
>>> my_string = 'A !He#a"lt#hy D$os@e Of% O*m$e+ga_3 F#a$t#t@y-A%ci^d*s P&er D{a]y K\'ee(p)s T*he D^.oc+to&r A#w*ay.\nFl-a)x Se/:ed A;nd W]alre A? G@oo[d S\\our]ce Of O!m&eg^a_3 F#a$t#t@y-A%ci^d*s.'
>>> 
>>> ## Split my_string at the spaces to create a list of garbled words.
>>> dirty_list = my_string.split()
>>> 
>>> ## Use list comprehension to clean the words while creating a new list.
>>> clean_list = [pattern.sub('', word) for word in dirty_list]
>>> 
>>> ## Join the Cleaned words in the new list, using spaces.
>>> clean_string = ' '.join(clean_list)
>>> 
>>> clean_string
'A Healthy Dose Of Omega FattyAcids Per Day Keeps The Doctor Away Flax Seed And Walnuts Are A Good Source Of Omega FattyAcids'
>>> 

Ну, это крошечный бит легче прочитать по сравнению с строкой символов верблюда. Но приговор по-прежнему потерял пунктуации и т. Д. Вы выиграете немного, вы теряете немного!

Ну, это было интересно! Что-нибудь еще?

Конечно, всегда есть что-то еще, когда человек изучает Python. Помните шаблон поиска [\ W_0-9] + ' используется в примерах выше? Вы когда-нибудь задумывались, почему код использует '+' персонаж после «[] ' задавать? Само по себе «[] ' будет соответствовать один персонаж За один раз, прежде чем двигаться дальше. Можно использовать только «[] ' И код все еще будет работать. Добавление . '+' делает его намного быстрее. Скорость также причина, по которой нужно Компилировать Узор для поиска, вместо того, чтобы использовать его как есть.

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

$ python
Python 3.9.0b5 (default, Oct 19 2020, 11:11:59) 
>>>
>>> import string
>>> print(string.printable)
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 
>>>

Теперь рассмотрите следующие сравнения.

## No '+' in Pattern. Pattern used as is, i.e. not compiled.
$ python -m timeit -s \
>   "import re, string" \
>   "re.sub('[\W_0-9]', '', string.printable)"
20000 loops, best of 5: 10.2 usec per loop

## No '+' in Pattern. Pattern is compiled.
$ python -m timeit -s \
>   "import re, string; \
>   pattern = re.compile('[\W_0-9]')" \
>   "pattern.sub('', string.printable)"
50000 loops, best of 5: 9.52 usec per loop

## Pattern used as is, i.e. not compiled. 
$ python -m timeit -s \
>   "import re, string" \
>   "re.sub('[\W_0-9]+', '', string.printable)"
100000 loops, best of 5: 3.56 usec per loop

## Pattern is compiled.
$ python -m timeit -s \
>   "import re, string; \
>   pattern = re.compile('[\W_0-9]+')" \
>   "pattern.sub('', string.printable)"
100000 loops, best of 5: 2.92 usec per loop

Вот это да!! Используя '+' и составление шаблона поиска чрезвычайно увеличивает скорость !!

Вывод

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

Вот a одноклассник Для читателя выяснить. Осмотрите его и рассекайте его кусочком. Каждый элемент в однопрочее является частью кода, показанного ранее. Смотреть на это на некоторое время! Попробуйте! Дышать!! Успокойся!! Как и твоя коллега-пифитониста, вы в конечном итоге получите это тоже …

$ python
Python 3.9.0b5 (default, Oct 19 2020, 11:11:59) 
>>>
>>> import re
>>>
>>> ## This is the original
>>> my_string = 'A !He#a"lt#hy D$os@e Of% O*m$e+ga_3 F#a$t#t@y-A%ci^d*s P&er D{a]y K\'ee(p)s T*he D^.oc+to&r A#w*ay.\nFl-a)x Se/:ed A;nd W]alre A? G@oo[d S\\our]ce Of O!m&eg^a_3 F#a$t#t@y-A%ci^d*s.'
>>> 
>>> ## The one-liner!!!
>>> clean_string = ' '.join([re.compile('[\W_]+').sub('', word) for word in my_string.split()])
>>> 
>>> ## The output is the same as above.
>>> clean_string
'A Healthy Dose Of Omega3 FattyAcids Per Day Keeps The Doctor Away Flax Seed And Walnuts Are A Good Source Of Omega3 FattyAcids'
>>> 

Финктерская академия

Этот блог был доставлен вам Гириша Рао , студент Финктерская академия Отказ Вы можете найти его Профиль намного здесь Отказ

Справка

Все исследования для этой статьи в блоге было сделано с использованием Python Documents , Поисковая система Google и общая база знаний Финктерская академия и Переполнение стека Общины.