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

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

string = raw_input("Please enter string: ")

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

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

Комментарии к вопросу (2)
Решение

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

>>> 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 обозначает возврат каретки (если вы работаете на windows, вы можете получить эти пробелы, и второе replace обработает их для вас!)

в основном:

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

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

Комментарии (8)

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

string = string.replace('\r', '').replace('\n', '')
Комментарии (1)

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

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

Комментарии (0)

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

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

читать подробнее здесь

Комментарии (2)

Другой вариант - regex:

>>> import re
>>> re.sub("\n|\r", "", "Foo\n\rbar\n\rbaz\n\r")
'Foobarbaz'
Комментарии (1)

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

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

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

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 () для строки в test_str.strip () .splitlines (), если line.strip ()])

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

Комментарии (1)

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

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

Комментарии (0)