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

В принципе, я прошу пользователя ввести строку текста в консоль, но строка очень длинная и включает в себя много разрывов строк. Как взять строку пользователя и удалить все разрывы строк, чтобы сделать ее одной строкой текста. Мой метод для получения строки очень прост.

string = raw_input("Please enter string: ")

Есть ли другой способ захватить строку у пользователя? Я запускаю Python 2.7.4 на Mac.

P.S. Очевидно, что я noob, поэтому, даже если решение не является наиболее эффективным, будет оценено тот, который использует самый простой синтаксис.

Ответ 1

Как вы входите в разрывы строк с помощью raw_input? Но, как только у вас есть строка с некоторыми символами в ней, вы хотите избавиться, просто replace их.

>>> mystr = raw_input('please enter string: ')
please enter string: hello world, how do i enter line breaks?
>>> # pressing enter didn't work...
...
>>> mystr
'hello world, how do i enter line breaks?'
>>> mystr.replace(' ', '')
'helloworld,howdoienterlinebreaks?'
>>>

В приведенном выше примере я заменил все пробелы. Строка '\n' представляет символы новой строки. И \r представляет возврат каретки (если вы находитесь в окнах, вы можете получить их, а второй replace будет обрабатывать их для вас!).

в основном

# you probably want to use a space ' ' to replace `\n`
mystring = mystring.replace('\n', ' ').replace('\r', '')

Обратите также внимание, что это плохая идея вызвать вашу переменную string, так как это затеняет модуль string. Другое имя, которого я бы избегал, но хотел бы иногда использовать: file. По той же причине.

Ответ 2

Вы можете попробовать использовать замену строки:

string = string.replace('\r', '').replace('\n', '')

Ответ 3

Вы можете разделить строку без аргумента separator arg, который будет обрабатывать последовательные пробелы как один разделитель (включая символы новой строки и вкладки). Затем присоединитесь к пробелу:

In : " ".join("\n\nsome    text \r\n with multiple whitespace".split())
Out: 'some text with multiple whitespace'

https://docs.python.org/2/library/stdtypes.html#str.split

Ответ 4

обновлено на основе Xbello комментария:

string = my_string.rstrip('\r\n')

подробнее здесь

Ответ 5

Другой вариант - регулярное выражение:

>>> import re
>>> re.sub("\n|\r", "", "Foo\n\rbar\n\rbaz\n\r")
'Foobarbaz'

Ответ 6

Метод с учетом

  • дополнительные белые символы в начале/конце строки
  • дополнительные белые символы в начале/конце каждой строки
  • различные символы конца строки

требуется такая многострочная строка, которая может быть грязной, например

test_str = '\nhej ho \n aaa\r\n   a\n '

и производит хорошую однострочную строку

>>> ' '.join([line.strip() for line in test_str.strip().splitlines()])
'hej ho aaa a'

ОБНОВЛЕНИЕ: Чтобы исправить несколько символов новой строки, производящих избыточные пробелы:

' '.join([line.strip() for line in test_str.strip().splitlines() if line.strip()])

Это работает и для следующего test_str = '\nhej ho \n aaa\r\n\n\n\n\na\n '

Ответ 7

Проблема с rstrip заключается в том, что он работает не во всех случаях (как я сам видел несколько). Вместо этого вы можете использовать - text = text.replace("\n", ""), это удалит всю новую строку \n с пробелом.

Заранее спасибо, ребята, за ваши голоса.