Как убрать перенос строки в python
Перейти к содержимому

Как убрать перенос строки в python

  • автор:

Python: удалить переносы строк и лишние пробелы из строки?

Всем привет. Подскажите плз, как решить задачу с минимальным изобретанием велосипедов. Нужно очистить строку от символов переноса (заменить на пробелы) и убрать лишние пробелы и пустые строки.

Сейчас это делается вот так:

‘ ‘.join(filter(None, map(unicode.strip, input_string.splitlines())))

Может есть более стандартный способ?

Попытки привлечь либу textwrap приводят только к раздутию кода… Может, я не умею ее готовить?

  • Вопрос задан более трёх лет назад
  • 94385 просмотров

Комментировать
Решения вопроса 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»,»»)
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

php

  • PHP
  • +1 ещё

Как unserialize данные от питона?

  • 1 подписчик
  • 35 минут назад
  • 31 просмотр

Как убрать перевод строки при вызове print?

Всё работает без ошибок, вот только он выводит «—» его по одной на одну строку, а мне надо чтобы он вывел их всех в одну строку. Не знаете как это сделать?

Отслеживать
47.5k 17 17 золотых знаков 56 56 серебряных знаков 99 99 бронзовых знаков
задан 12 мая 2021 в 6:35
Jasur05 Mag. Jasur05 Mag.
17 2 2 серебряных знака 7 7 бронзовых знаков
выберите лучший ответ, раз вам помогли. так принято на StackOverflow
12 мая 2021 в 7:30

5 ответов 5

Сортировка: Сброс на вариант по умолчанию

Если вы выводите результат функции через print , то в самой функции не делайте print , а только формируйте строку, и возвращайте ее через return :

a = int(input("Введите длину линии: ")) def line(a): s = '' for i in range(a): s += '-' return s print(line(a)) 

Можно функцию упростить до двух строк:

def line(a): return '-' * a 

Удаление разрывов строк в Python

Если у вас возникла необходимость используя Python удалить разрывы строк из текста, то можно воспользоваться следующим методом текстовой переменной:

Метод replace заменяет в строке все вхождения подстроки old на подстроку new. Если методу replace задать еще один параметр count то заменены будут не все вхождения, а только первые count из них.

Существуют следующие типы разрывов строк:

Пример удаления разрывов строк в Python:

    //Удаление всех трех типов разрывов строк
    string = string.replace(«\r»,»»)
    string = string.replace(«\n»,»»)

Python: print без символа новой строки

Возьмём такой пример:

$ cat no_new_line.py #!/usr/bin/env python list = ('a', 'b', 'c') for i in list: print(i)

Который ведет на экран каждый элемент с новой строки:

$ ./no_new_line.py a b c

Что бы вывести элементы списка на экран один за другим – можно использовать несколько способов.

for i in text: print(i.rstrip('n'))
for i in list: print(i),
$ ./no_new_line.py a b c

Ещё один способ – с помощью __future__ print_function .

Для этого перед импортами добавляем:

#!/usr/bin/env python from __future__ import print_function list = ('a', 'b', 'c')

А в цикле – используем аргумент end для функции print() :

for i in list: print(i, end=' ')
$ ./no_new_line.py a b c

Стоит обратить внимание ещё и на аргумент sep (separator):

$ cat no_new_line.py #!/usr/bin/env python from __future__ import print_function print('one', 'two', 'three', sep='--*--')
$ ./no_new_line.py one--*--two--*--three

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *