2016-10-13 4 views

ответ

6

Вы можете разделить строку на строки, полосу от всех непечатаемых на справа, используя rstrip, а затем добавить новую строку в конце каждой строки:

''.join([line.rstrip()+'\n' for line in string.splitlines()]) 
+2

Если строка не заканчивается символом новой строки, это добавит ее (что может быть или не желательно). – ekhumoro

+0

@ekhumoro Хорошее наблюдение. Такой подход можно использовать на срезе разделенных линий, который исключает последнее и обрабатывает последнее по-разному. Зависит от OP. –

+0

Он работает, но оставляет строку в конце строки, как сказал эхуморо. поэтому я использую rstrip() для удаления этой новой строки. работает отлично. –

3
import re 
re.sub('\s+\n','\n',string) 

Edit: улучшенная версия от комментариев:

re.sub(r'\s+$', '', string, flags=re.M) 
+0

не работает для строк с '\ п \ n' – kame

+1

Это не удастся для строк, которые не заканчиваются символом новой строки. Лучше использовать 're.sub (r '\ s + $', '', string, flags = re.M)'. – ekhumoro

-1

Как вы можете найти here,

Чтобы удалить все пробельные символы (пробел, табуляция, перевод строки, и так далее), вы можете использовать разделенное затем присоединиться:

sentence = ''.join(sentence.split()) 

или регулярное выражение:

import re 
pattern = re.compile(r'\s+') 
sentence = re.sub(pattern, '', sentence) 
+3

Но он не хочет заменять все пробелы. – kame

+0

То, о чем вы говорите, это 'str.replace()' not 'str.sub()' – Ssein

+0

OP не хочет удалять все пробелы в строке, только на концах строк. Ваше решение удаляет все пробелы, даже между словами в предложении. – jatinderjit

Смежные вопросы