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

Posted

技术标签:

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

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

n=1 的示例:

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

【问题讨论】:

【参考方案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 行代码这两条线的作用很明显。但无论如何感谢您的反馈。 想一想,您不仅是在回应问题所有者,而且是在回应以后将研究同一主题的每个人。

以上是关于将字符串格式化为仅在 python 中的单词之间有 n 个空格的主要内容,如果未能解决你的问题,请参考以下文章

将模型中的DateTime格式化为仅在视图中的日期

将数据数量/容量格式化为字符串

在python中将长数字格式化为字符串

React - 如何将电话号码格式化为用户类型

Python - 将字符串格式化为 url 的最短方法

Python如何将单引号转换为双引号以格式化为json字符串