Удаление разрывов строк в Python
Если у вас возникла необходимость используя Python удалить разрывы строк из текста, то можно воспользоваться следующим методом текстовой переменной:
Метод replace заменяет в строке все вхождения подстроки old на подстроку new. Если методу replace задать еще один параметр count то заменены будут не все вхождения, а только первые count из них.
Существуют следующие типы разрывов строк:
Пример удаления разрывов строк в Python:
-
//Удаление всех трех типов разрывов строк
string = string.replace(«\r»,»»)
string = string.replace(«\n»,»»)
Удаление пунктуации из строки
Для удаления пунктуации из строки 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 класса'
Кстати таким же способом можно удалять например «стоп слова» из текста, который подготавливается к поиску.
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Преобразование строки в число
- Строку в список, кортеж или множество символов
- Одинарные, двойные и тройные кавычки в строке Python
- Вывод специальных символов в строке Python «как есть»
- Объединение и повторение строк
- Индексирование строк
- Использование срезов строк
- Cрез строки Python от заданного символа/знака до конца строки
- Создание макета для печати базовыми методами строк
- Способы форматирования текстовых строк
- Подсчет повторений слов в тексте, деление строки на список слов
- Удаление слова из строки Python по фрагменту или шаблону
- Удаление пунктуации из строки
- Деление строки по заглавным буквам
- Создание отчетов и писем по шаблонам
Необходимо очистить строку от посторонних символов
Строка содержит различные символы, нужно удалить все, оставив лишь буквы и пробелы. Как я понимаю, нужно действовать через регулярные выражения, но как конкретно — мне непонятно.
Отслеживать
1,342 3 3 золотых знака 14 14 серебряных знаков 27 27 бронзовых знаков
задан 31 авг 2015 в 9:23
157 1 1 золотой знак 1 1 серебряный знак 12 12 бронзовых знаков
похожие вопросы: Удалить все цифры из строки, Как удалить все пробелы из строки в Python?
2 сен 2015 в 23:27
4 ответа 4
Сортировка: Сброс на вариант по умолчанию
При помощи regexp можно так:
import re s = 'Hello!@#!%!#&&!*!#$#%@*+_< world!' reg = re.compile('[^a-zA-Z ]') print(reg.sub('', s))
Отслеживать
ответ дан 31 авг 2015 в 9:37
3,577 1 1 золотой знак 11 11 серебряных знаков 19 19 бронзовых знаков
Все получилось, но команду вводил reg, а не regex, видимоб различие версий сказывается. Спасибо!
31 авг 2015 в 13:25
Прошу прощения, это у меня опечатка.
1 сен 2015 в 0:49
Имеется метод str.translate(), который удаляет все символы из строки, содержащиеся в некотором наборе. regexp тут не нужны скорее всего.
Отслеживать
ответ дан 31 авг 2015 в 9:28
Владимир Мартьянов Владимир Мартьянов
9,649 4 4 золотых знака 21 21 серебряный знак 35 35 бронзовых знаков
наткнулся на такую строчку str.translate(None, string.punctuation), но при ее реализации выдает, что метод translate принимает только один аргумент
31 авг 2015 в 9:57
А у меня все работает. Без конкретного кода и версии Питона (хотя вряд ли в ней дело) ничем не помочь.
31 авг 2015 в 10:00
python 3.4 import string fhand= open('C:\Python34\west.txt') intab=string.punctuation outtab=None trantab=maketrans(intab, outtab) for line in fhand: line = line.translate(trantab) line = line.lower() print(line) #затем идет работа со строкой(подсчет букв)
31 авг 2015 в 10:14
да. с оформлением коммента косяк 🙁
31 авг 2015 в 10:14
Начните с минимального кода, без файлов, punctuation и т.п.
31 авг 2015 в 10:17
Если хочется оставить только ascii буквы и соответствующие стандартные символы пробела, то bytes.translate() является наиболее эффективным методом:
#!/usr/bin/env python3 from string import ascii_letters, whitespace good_chars = (ascii_letters + whitespace).encode() junk_chars = bytearray(set(range(0x100)) - set(good_chars)) def clean(text): return text.encode('ascii', 'ignore').translate(None, junk_chars).decode() print(clean('Hello1@#!%!#&&!*!#$#%@*+_ < world!')) # ->Hello world
Если необходимо сохранить произвольные буквы и символы пробела, то можно использовать регулярные выражения:
>>> import regex as re # $ pip install regex >>> print(re.sub(r'[^\w\s]', '', 'Hello1@#!%!#&&!*!#$#%@*+_<\u00A0ёж!')) Hello1_ ёж >>> print(re.sub(r'[^\pL\p]', '', 'Hello1@#!%!#&&!*!#$#%@*+_<\u00A0ёж!')) Hello еж
Стандартный re модуль не поддерживает \p<> Юникодные свойства, поэтому необходимо использовать regex модуль. Различные классы символов такие как \w , \pL могут порождать слегка отличные результаты (см. ёж vs. еж в примере). Можно также использовать Юникодные свойства напрямую: unicodedata + unicode.translate() .
Как удалить первый элемент строки python
Для этой операции удобно использовать срезы. Срез позволяет получить любую часть строки, заключённую между указанными индексами. Например:
>>> string = "Hello, World!" >>> string[7:12] 'World' >>>
Удаление первого символа строки равнозначно получению среза со второго символа и до конца строки:
>>> string = "hello" >>> new_str = string[1:] 'ello' >>>
Второй индекс можно опустить, по умолчанию он равен длине строки.
