【问题标题】:Format a string to have n spaces only between words in python将字符串格式化为仅在 python 中的单词之间有 n 个空格
【发布时间】:2019-02-11 13:20:42
【问题描述】:

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

n=1 的示例:

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

【问题讨论】:

    标签: python string whitespace adjustment


    【解决方案1】:

    只需split 它和join 按空格排列的结果列表

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

    来自str.split(sep) docs:

    如果 sep 未指定或为 None,则使用不同的分割算法 应用:连续空白的运行被视为单个 分隔符,结果开头不包含空字符串 如果字符串有前导或尾随空格,则结束。

    【讨论】:

    • @schwobaseggl, split 使用默认参数处理它
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      最简单的方法是使用splitjoin

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

      【讨论】:

        【解决方案4】:

        试试这个。

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

        【讨论】:

        • 为什么?虽然此代码可能会回答问题,但提供有关其解决问题的方式和/或原因的附加上下文将提高​​答案的长期价值。
        • 首先这是我在这里的第一条评论,你可以注意到,是的,提供额外的上下文更好,但我觉得在这种情况下没有必要,因为我只有 2 行代码这两条线的作用很明显。但无论如何感谢您的反馈。
        • 想一想,您不仅是在回应问题所有者,而且是在回应以后将研究同一主题的每个人。
        猜你喜欢
        • 2011-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-12
        • 1970-01-01
        • 1970-01-01
        • 2020-01-14
        • 2016-03-31
        相关资源
        最近更新 更多