将字符串格式化为仅在 python 中的单词之间有 n 个空格

Format a string to have n spaces only between words in python

我正在处理非空白字符之间具有不同数量空格的字符串。问题是这个字符串构成了一个类别,它们必须相等。我想将它们格式化为在非空白字符 f.e 之间具有完全相同数量的空格。 1,但如果可能的话,这可以推广为插入更多空格。而且首尾不能有空格

带有n=1的示例:

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

只需 split 它和 join 结果列表 space(es)

>>> " ".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.

我们yourstring.strip()让字符串从开始到结束结束空格。您可以根据需要在字符串上使用 join() 来格式化字符串。希望对你有帮助。

最简单的方法是使用 splitjoin

>>> (' '*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'

试试这个。

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