Отформатируйте строку так, чтобы в питоне было только n пробелов между словами - PullRequest
0 голосов
/ 06 сентября 2018

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

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

'a  b    b' => 'a b c'
'  a b   c  ' => 'a b c'

Ответы [ 4 ]

0 голосов
/ 06 сентября 2018

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

def spaces_btw_characters(word, spaces):
    return (' '*spaces).join(word.split())
0 голосов
/ 06 сентября 2018

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

0 голосов
/ 06 сентября 2018

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

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

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

# значения драйвера:

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

IN : s = '  a b   c  '
     n = 2
OUT : 'a  b  c'
0 голосов
/ 06 сентября 2018

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

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

С str.split(sep) документы:

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

...