---
---05 жовтня 2020 р. 08:11

5 Способів прибрати непотрібні символи з рядка на Python

Забираємо конкретні символи з рядка


Скористайтеся ' str.replace '

З допомогою 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 (шаблон, відповідь, рядок, кількість=0, прапори=0)

> Повертає рядок, отриманий шляхом заміни крайніх лівих неперекриваються
> збігів із шаблоном у рядку на значення repl. Якщо збіги з шаблоном
> не знайдено, повертається незмінений рядок
> — З документації Python'а

Якщо ми хочемо забрати символи, то просто замінюємо збіги на порожній рядок.

s="Hello$@& Python3$"
import re
s1=re.sub("[$|@|&]","",s)
print (s1)
# Результат: Hello Python3

s1=re.sub(“[$|@|&]”,””,s)

  • Замінний шаблон → * “[$ | @ | & ]”*
  • [ ] використовується для визначення множини
  • $ | @ | & → шукатиме $ або @ або &
  • Замінюємо на порожній рядок
  • Якщо вищезазначені символи замінюються знайдені, то вони замінюються на порожній рядок

Забрати всі символи, крім літер

За допомогою 'isalpha()'

isalpha() використовується для того, щоб перевіряти, чи рядок складається лише з літер. Повертає True якщо є буквою. Ми будемо проходити по кожному символу рядка і перевіряти чи є він літерою.

Приклад

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

s=”Привіт$@ Python3&”

(c для c in s, якщо c.isalpha())

Результат → * ['H', 'e', 'l', 'l', 'o', 'P', 'y', 't', 'h', 'o', 'n'] *

Перед нами об'єкт генератор, що містить усі літери з рядка:
s1=””.join(c for c in s, якщо c.isalpha())

””.join з'єднуватиме всі символи в один рядок.

За допомогою 'filter()'

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

f = фільтр(str.isalpha, s)

Функція filter() використовуватиме str.isalpha метод для кожного елемента рядка, і якщо отримуємо істину , то ми повертаємо елемент. Інакше – пропускаємо.

s1 = ””.join(f)

Функція 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

Розглянемо s1=re.sub(“[^A-Za-z0–9]”,””,s)

  • “[^A-Za-z0–9]” → Цей шаблон шукатиме всі символи, крім літер та цифр.
  • Всі знайдені символи будуть замінені на порожній рядок
  • Всі символи, крім літер та цифри прибрані.

Забрати всі числа з рядка, за допомогою регулярних виразів

За допомогою 're.sub()'

s = "Hello347 Python3$"
import re
s1 = re.sub("[0-9]", "", s)
print(s1)
# Результат: Hello Python$

Розглянемо s1=re.sub(“[0–9]”,””,s)

  • [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 хостинг.

Вам це подобається? Поділіться в соціальних мережах!

D
  • 25 жовтня 2021 р. 00:45

Я конечно понимаю, что это статья с Медиума, но всё равно - очень не хватает сравнения скорости выполнения замен.

D
  • 25 жовтня 2021 р. 00:45

Опечатка в заголовке статьи - 5 СОпсобов

KR
  • 28 березня 2022 р. 07:14

помогло, спасибо

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up
Ua

Qt - Тест 001. Сигналы и слоты

  • Результат:84бали,
  • Рейтинг балів4
Ua

Qt - Тест 001. Сигналы и слоты

  • Результат:42бали,
  • Рейтинг балів-8
ОК

Qt - Тест 001. Сигналы и слоты

  • Результат:47бали,
  • Рейтинг балів-6
Останні коментарі
ИМ
Игорь Максимов22 листопада 2024 р. 08:51
Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii Legotckoi31 жовтня 2024 р. 11:37
Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZE19 жовтня 2024 р. 05:19
Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь Максимов05 жовтня 2024 р. 04:51
Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas505 липня 2024 р. 08:02
QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Тепер обговоріть на форумі
n
nkly02 січня 2025 р. 23:52
Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
M
Marsel16 серпня 2023 р. 11:26
OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.
Evgenii Legotckoi
Evgenii Legotckoi24 червня 2024 р. 12:11
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey115 листопада 2024 р. 03:04
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProject04 червня 2022 р. 00:49
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…

Слідкуйте за нами в соціальних мережах