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






Просто split это и join результирующий список по пробелам
>>> " ".join('a b b'.split())
'a b c'
>>> " ".join(' a b c '.split())
'a b c'
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.
Мы 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())
Почему? Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему он решает проблему, улучшит долгосрочную ценность ответа.
Прежде всего, это мой первый комментарий здесь, как вы могли заметить, и да, лучше предоставить дополнительный контекст, но я чувствовал, что в этом случае в этом нет необходимости, пока у меня всего 2 строки кода, и очевидно, что эти 2 строки делают . Но в любом случае спасибо за отзыв.
Думайте об этом так, как будто вы не только отвечаете владельцу вопроса, вы отвечаете всем, кто будет исследовать ту же тему позже.
@schwobaseggl,
splitс аргументом по умолчанию позаботится об этом