Есть ли кросс-платформенная библиотека, которая сворачивает многострочную строку в однострочную строку без повторений пробелов?Есть ли в библиотеке функция сбрасывания строк?
Я придумал какой-нибудь снипп, но мне интересно, есть ли стандартная функция, которую я мог бы импортировать, возможно, даже оптимизирован в C?
def collapse(input):
import re
rn = re.compile(r'(\r\n)+')
r = re.compile(r'\r+')
n = re.compile(r'\n+')
s = re.compile(r'\ +')
return s.sub(' ',n.sub(' ',r.sub(' ',rn.sub(' ',input))))
P.S. Спасибо за хорошие наблюдения. ' '.join(input.split())
, по-видимому, побеждает, поскольку он на самом деле работает быстрее примерно в два раза в моем случае по сравнению с поиском-заменой с помощью предварительно скомпилированного r'\s+'
regex.
Почему «кросс-платформенный» в заголовке вопроса? Почти все в Python является кросс-платформенным, за исключением специфичных для ОС. Это явно не зависит от ОС, если вы ничего не опустили. –
хорошо пункт. Я не знал, что символ «\ n» является кросс-платформенным в python. Я думал, что '\ n' буквально означает специальный символ ascii. – Evgeny
Это буквально означает особый символ ascii. Этот символ одинаковый на всех платформах - это новая строка. –