Задать вопрос

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

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


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


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


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


Попытки привлечь либу textwrap приводят только к раздутию кода… Может, я не умею ее готовить?
  • Вопрос задан
  • 100267 просмотров
Подписаться 9 Средний Комментировать
Решения вопроса 1
un1t
@un1t
Регуляркой:
import re
mystr = " balabla\n zzz "
re.sub("^\s+|\n|\r|\s+$", '', mystr)

В этом примере удаляем пробелы в начале и конце строки и символы переноса строки. Отредактируйте под свои нужды.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
burdakovd
@burdakovd
' '.join(s.split())
не подойдёт?
Ответ написан
taliban
@taliban
php программист
Регулярка \s+ отличный способ =)
Ответ написан
@dikkini
__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

Ответ написан
Комментировать
@Howling
string.rstrip()
или
string = string.replace("\n","")
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы