Видалення пунктуації з рядка
Для видалення пунктуації рядка Python скористаємося методом рядка str.replace() . А саме, у циклі пройдемося по всіх символах пунктуації, і якщо вони є, то просто замінимо його на порожній рядок.
Щоб не згадувати і не збирати всі символи пунктуації до списку, скористаємося модулем string, який люб'язно надає атрибут із символами пунктуації string.punctuation.
Докладний приклад для розуміння алгоритму (найповільніший спосіб):
# вихідний рядок
>>>
line
=
'- Мама мила раму, а Маша допомагала. (з пропису 1 класу)'
>>>
import
string
>>>
string.punctuation
# '!"#$%&\'()*+,-./:;?@[\\]^_`<|>~'
пунктуацію будемо видаляти в циклі
for
p
in
string.punctuation:
if
p
in
line:
# Банальна заміна символу в рядку
line
=
line.replace(p,
'')
>>>
line.strip()
# 'Мама мила раму а Маша допомагала з пропису 1 класу'
До речі, у такий же спосіб можна видаляти наприклад "стоп словаз тексту, який готується до пошуку.
Короткі, але ефективніші варіанти:
# Найшвидший і найефективніший варіант
>>>
import
string
>>>
line
=
'- Мама мила раму, а Маша допомагала. (з пропису 1 класу)'
>>>
s
=
line.translate(str.maketrans('',
'',
string.punctuation))
>>>
s
# ' Мама мила раму а Маша допомагала з пропису 1 класу'
>>>
import
string
>>>
line
=
'- Мама мила раму, а Маша допомагала. (з пропису 1 класу)'
# використовуємо `set()` для швидкості
>>>
exclude
=
set(string.punctuation)
>>>
s
=
''.join(ch
for
ch
in
line
if
ch
not
in
exclude)
>>>
s
# ' Мама мила раму а Маша допомагала з пропису 1 класу'
>>>
import
re,
string
>>>
line
=
'- Мама мила раму, а Маша допомагала. (з пропису 1 класу)'
>>>
regex
=
re.compile('[%s]'
%
re.escape(string.punctuation))
>>>
s
=
regex.sub('',
line)
>>>
s
# ' Мама мила раму а Маша допомагала з пропису 1 класу'
- ОГЛЯДНА СТОРІНКА РОЗДІЛУ
- Перетворення рядка на число
- Рядок у список, кортеж або безліч символів
- Одинарні, подвійні та потрійні лапки у рядку Python
- Виведення спеціальних символів у рядку Python "як є"
- Об'єднання та повторення рядків
- Індексування рядків
- Використання зрізів рядків
- Зріз рядка Python від заданого символу/знака до кінця рядка
- Створення макету для друку базовими методами рядків
- Способи форматування текстових рядків
- Підрахунок повторень слів у тексті, розподіл рядка на список слів
- Видалення слова з рядка Python за фрагментом або шаблоном
- Видалення пунктуації з рядка
- Розподіл рядка за великими літерами
- Створення звітів та листів за шаблонами
Способи видалення розділових знаків з рядків за допомогою Python
У Python є кілька способів видалення розділових знаків з рядка. Це базове, але важливе завдання у обробці та аналізі тексту. Розглянемо різні методи, придатні як новачків, так досвідчених розробників.
Використання методу translate()
Метод translate() - це потужний інструмент видалення або заміни символів у рядку.
import string text = "Приклад рядка, з деякими знаками; пунктуації. " text = text.translate(str.maketrans('', '', string.punctuation)) print(text) # Приклад рядка з деякими розділовими знаками
- Імпортуємо модуль string, який містить рядок з усіма розділовими знаками.
- str.maketrans('', '', string.punctuation) створює таблицю перекладу, де всі розділові знаки з string.punctuation видаляються.
- translate() застосовує цю таблицю до нашого рядка, видаляючи всі розділові знаки.
Використання регулярних виразів
Регулярні вирази надають гнучкий спосіб пошуку та заміни тексту.
import re text = "Це ще один приклад: рядок зі знаками.пунктуації!" text = re.sub(r'[^\w\s]', '', text) print(text) # Це ще один приклад рядок зі розділовими знаками
- Імпортуємо модуль re для роботи з регулярними виразами.
- re.sub(r'[^\w\s]', '', text) замінює все, що не є буквою, цифрою або символом пробілу, на порожній рядок.
Використання List Comprehension
Цей метод поєднує в собі використання спискового включення та умовного оператора для фільтрації розділових знаків.
import string text = "Приклад! з різними знаками; пунктуації." text = ''.
- У списковому увімкненні створюється новий рядок, що включає тільки ті символи з тексту, які не містяться в string.punctuation .
Висновок
Видалення розділових знаків з рядка - часто необхідна операція в обробці тексту. У Python існує кілька способів виконати це завдання, кожен з яких має свої переваги. Вибір методу залежить від конкретної ситуації та особистих переваг.