По сути, я прошу пользователя ввести строку текста в консоль, но строка очень длинная и содержит много переносов строк. Как бы я мог взять строку пользователя и удалить все переносы строк, чтобы она стала одной строкой текста. Мой метод получения строки очень прост.
string = raw_input("Please enter string: ")
Есть ли другой способ получения строки от пользователя? Я использую Python 2.7.4 на Mac.
P.S. Очевидно, что я ноб, поэтому даже если решение не самое эффективное, но использует наиболее простой синтаксис, буду признателен.
Как вводить переносы строк с помощью 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
. По той же причине.
Вы можете попробовать использовать замену строки:
string = string.replace('\r', '').replace('\n', '')
Вы можете разделить строку без аргумента разделителя, который будет обрабатывать последовательные пробелы как один разделитель (включая новые строки и вкладки). Затем присоединитесь, используя пробел:
In : " ".join("\n\nsome text \r\n with multiple whitespace".split())
Out: 'some text with multiple whitespace'
Метод с учетом
требуется такая многострочная строка, которая может быть грязной, например,.
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'
Проблема с rstrip заключается в том, что он работает не во всех случаях (как я сам видел мало). Вместо этого вы можете использовать - text = text.replace ("\ n", "") это удалит всю новую строку \ n пробелом.
Заранее спасибо, ребята, за ваши голоса.