как удалять пробелы не только в конце строки, но и во всей строке(strep удаляет только в конце.)

как удалять пробелы не только в конце строки, но и во всей строке(strep удаляет только в конце.)

text = "d       d\n\n\n\n\n\nd"
print(text)

Хочу что бы вывод был:

d d
d

Ответы (3 шт):

Автор решения: UserTest013

Есть два варианта. Можно воспользоваться регулярными выражениям

import re
text = re.sub(" +", " ", text)

Или циклом, без регулярок:

while "  " in text:
    text = text.replace("  ", " ")
→ Ссылка
Автор решения: Stanislav Volodarskiy

Вопрос не полон, но можно применить регулярные выражения:

#        один пробел или перевод строки или таб или ...
#        ----
re.sub(r'(\s)\1*', r'\1', text)
#            ---     --
#            ^       из всей группы оставляем только символ в скобках
#            символ в скобках повторяется сколько угодно раз
'd       d\n\n\n\n\n\nd'  -> 'd d\nd'
'd       d\n\n\n \n\n\nd' -> 'd d\n \nd'

Первый пример работает как просили, а про второй не знаю.

→ Ссылка
Автор решения: MaxU

Используя регулярные выражения, можно воспользоваться capturing group, состоящей из пробелов/табуляций или символов перевода строки и воспользоваться квантификатором {2,} (2 или более раз) и заменить найденную подстроку на "captured group".

Пример:

import re

re.sub(r"(\s){2,}", r"\1", text)
>>> 'd d\nd'
→ Ссылка