Отформатируйте строку, чтобы в Python было n пробелов только между словами

Я работаю со строками, у которых есть разное количество пробелов между непробельными символами. Проблема в том, что эти строки образуют категорию, и они должны быть равны. Я хотел бы отформатировать их так, чтобы между непробельными символами было одинаковое количество пробелов, например. 1, но это можно было бы обобщить, чтобы вставить больше пробелов, если это возможно. И в начале и в конце не должно быть пробелов.

Примеры с n=1:

'a  b    b' => 'a b c'
'  a b   c  ' => 'a b c'
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
0
3 316
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Просто split это и join результирующий список по пробелам

>>> " ".join('a  b    b'.split())
'a b c'
>>> "  ".join('  a b   c  '.split())
'a  b  c'

Из документов str.split(sep):

If sep is not specified or is None, a different splitting algorithm is applied: runs of consecutive whitespace are regarded as a single separator, and the result will contain no empty strings at the start or end if the string has leading or trailing whitespace.

@schwobaseggl, split с аргументом по умолчанию позаботится об этом

taras 06.09.2018 11:55

Мы yourstring.strip() для строки, чтобы закончить пробелы от начала и до конца. Вы можете использовать join() в своей строке для форматирования строки в соответствии с вашими потребностями. Надеюсь, это вам поможет.

Самый простой способ сделать это - использовать split и join.

>>> (' '*n).join(s.split())

Примечание: ' '*n предназначен только для удобства в случае необходимости объединения с большим количеством пробелов между ними.

#driver значения:

IN : s = 'a  b    b'
     n = 1
OUT : 'a b b'

IN : s = '  a b   c  '
     n = 2
OUT : 'a  b  c'

Попробуй это.

def spaces_btw_characters(word, spaces):
    return (' '*spaces).join(word.split())

Почему? Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему он решает проблему, улучшит долгосрочную ценность ответа.

Nic3500 06.09.2018 12:32

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

A. Dhiblawe 06.09.2018 13:05

Думайте об этом так, как будто вы не только отвечаете владельцу вопроса, вы отвечаете всем, кто будет исследовать ту же тему позже.

Nic3500 06.09.2018 13:08

Другие вопросы по теме