Удаление разрывов строк в Python
Если у вас возникла необходимость используя Python удалить разрывы строк из текста, то можно воспользоваться следующим методом текстовой переменной:
Метод replace заменяет в строке все вхождения подстроки old на подстроку new. Если методу replace задать еще один параметр count то заменены будут не все вхождения, а только первые count из них.
Существуют следующие типы разрывов строк:
Пример удаления разрывов строк в Python:
-
//Удаление всех трех типов разрывов строк
string = string.replace(«\r»,»»)
string = string.replace(«\n»,»»)
Python-сообщество
![]()
- Начало
- » Python для новичков
- » Удалить символ переноса строки
#1 Июнь 18, 2012 00:16:23
Serbis От: Зарегистрирован: 2012-02-13 Сообщения: 38 Репутация: 0 Профиль Отправить e-mail
Удалить символ переноса строки
Совершенно идиотский вопрос. Из файла readlines выбирает все строки, но после каждой ставит \n. Так как это служебный символ replace(r’\n’, ») ничего не дает, злополучный перевод строки остается на своем месте. Как блин его удалить?
[‘\xd0\x9c\xd0\xb8\xd0\xbb\xd0\xbb\xd0\xb8\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80 — 003\n‘, ‘\xd0\xa1\xd0\xb0\xd0\xbd\xd1\x82\xd0\xb8\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80 — 004\n‘, ‘\xd0\x94\xd0\xb5\xd1\x86\xd0\xb8\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80 — 005\n‘, ‘\xd0\x9c\xd0\xb5\xd1\x82\xd1\x80 — 006\n‘, ‘\xd0\x9a\xd0\xb2\xd0\xb0\xd0\xb4\xd1\x80\xd0\xb0\xd1\x82\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbc\xd0\xb8\xd0\xbb\xd0\xbb\xd0\xb8\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80 — 050\n‘, ‘\xd0\x9a\xd0\xb2\xd0\xb0\xd0\xb4\xd1\x80\xd0\xb0\xd1\x82\xd0\xbd\xd1\x8b\xd0\xb9 \xd1\x81\xd0\xb0\xd0\xbd\xd1\x82\xd0\xb8\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80 — 051\n‘, ‘\xd0\x9a\xd0\xb2\xd0\xb0\xd0\xb4\xd1\x80\xd0\xb0\xd1\x82\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xb4\xd0\xb5\xd1\x86\xd0\xb8\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80 — 053\n‘ ну и т. д.
#2 Июнь 18, 2012 00:24:40
fata1ex От: Зарегистрирован: 2009-07-11 Сообщения: 732 Репутация: 52 Профиль Отправить e-mail
Удалить символ переноса строки
[01:23] home:~/dev cat in
1
2
3
4
5
6
>>> map(lambda s: s.replace('\n', ''), open('in', 'r').readlines()) ['1', '2', '3', '4', '5', '6']
>>> map(lambda s: s[:-1], open('in', 'r').readlines()) ['1', '2', '3', '4', '5', '6']
>>> map(lambda s: s.rstrip(), open('in', 'r').readlines()) ['1', '2', '3', '4', '5', '6']
Отредактировано fata1ex (Июнь 18, 2012 00:26:52)
#3 Июнь 18, 2012 01:10:36
py.user.next От: Зарегистрирован: 2010-04-29 Сообщения: 9685 Репутация: 841 Профиль Отправить e-mail
Удалить символ переноса строки
>>> with open('/etc/passwd') as fin: . lines = fin.read().splitlines() . >>> lines[:3] ['root:x:0:0:root:/root:/bin/bash', 'bin:x:1:1:bin:/bin:/sbin/nologin', 'daemon:x:2:2:daemon:/sbin:/sbin/nologin'] >>>
#4 Июль 1, 2012 04:34:39
odnochlen Зарегистрирован: 2012-06-28 Сообщения: 794 Репутация: 14 Профиль Отправить e-mail
Удалить символ переноса строки
Serbis
Так как это служебный символ replace(r’\n’, ») ничего не дает,

Коллективный тупняк?
replace('\n', '')
Как убрать символ новой строки (\n) при чтении строк из файла
При использовании file.readlines() получаем что-то вроде этого:
>>> file.readlines() ['12\n', '10\n', '9\n', '15\n', '10\n', '120']
Как убрать \n ?
Отслеживать
8,582 4 4 золотых знака 29 29 серебряных знаков 53 53 бронзовых знака
задан 30 ноя 2016 в 19:06
user216622 user216622
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
>>> l = ['12\n', '10\n', '9\n', '15\n', '10\n', '120'] >>> l = [line.rstrip() for line in l] >>> l ['12', '10', '9', '15', '10', '120']
Отслеживать
ответ дан 30 ноя 2016 в 19:38
1,991 12 12 серебряных знаков 23 23 бронзовых знака
стоит заметить, что .rstrip() также удаляет любой пробел в конце строки, а не только символы новой строки как .rstrip(‘\n’) (это может и быть желаемым поведением).
Python: удалить переносы строк и лишние пробелы из строки?
Всем привет. Подскажите плз, как решить задачу с минимальным изобретанием велосипедов. Нужно очистить строку от символов переноса (заменить на пробелы) и убрать лишние пробелы и пустые строки.
Сейчас это делается вот так:
‘ ‘.join(filter(None, map(unicode.strip, input_string.splitlines())))
Может есть более стандартный способ?
Попытки привлечь либу textwrap приводят только к раздутию кода… Может, я не умею ее готовить?
- Вопрос задан более трёх лет назад
- 95828 просмотров
Комментировать
Решения вопроса 1
Регуляркой:
import re
mystr = » balabla\n zzz »
re.sub(«^\s+|\n|\r|\s+$», », mystr)
В этом примере удаляем пробелы в начале и конце строки и символы переноса строки. Отредактируйте под свои нужды.
Ответ написан более трёх лет назад
Нравится 9 3 комментария
Fak3 @Fak3 Автор вопроса
Спасибо за наводку!
Задача решается так:
re.sub(«\s*\n\s*», ‘ ‘, s.strip())
re.sub(«\s+», » «, s)
все норм, только вот так:
import re
mystr = » balabla\n zzz »
mystr = re.sub(«^\s+|\n|\r|\s+$», », mystr)
PS Спасибо за способ, помогло
Ответы на вопрос 4
' '.join(s.split())
не подойдёт?
Ответ написан более трёх лет назад
Нравится 5 1 комментарий
Правда при этом не только переносы и пробелы будут обработаны, но вообще все пробельные символы (табы например). Но в обычных юзкейсах это именно то что нужно.
php программист
Регулярка \s+ отличный способ =)
Ответ написан более трёх лет назад
Нравится 1 3 комментария
Fak3 @Fak3 Автор вопроса
Что-то мне фантазии не хватает, как это регуляркой решить. Поподробней можно?
Рустам Сафин @snegovikufa
Подозреваю через re.match (вроде?) создаешь список кандидатов на замену, а затем применяешь your_string.replace(what_from, what_to)
Fak3 @Fak3 Автор вопроса
А как регуляркой найти список кандидатов на замену?
__author__ = 'dikkini@gmail.com' from itertools import groupby def lines_filter(iterable): """ input: any iterable output: generator or list """ wait_chr = False is_begin = True #======================================================================================================== # You can delete "groupby" and the result will not change, but will increase the length of the input list. #======================================================================================================== for item, i in groupby(iterable): if item: is_begin = False if wait_chr: wait_chr = False yield '' yield item elif not is_begin and not wait_chr: wait_chr = True if __name__ == '__main__': list1 =['','','','i','hgf', '','','','9876','','','7','','9','','',''] # Input list print [i for i in lines_filter(list1)] # Output to the list
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
string.rstrip()
или
string = string.replace(«\n»,»»)
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Python
- +1 ещё
Error Connecting: HTTPSConnectionPool(host=’url’, port=443) как решить?
- 1 подписчик
- час назад
- 7 просмотров