【问题标题】:Regex insert space every third character, except at end of line正则表达式每隔三个字符插入空格,行尾除外
【发布时间】:2015-10-07 06:54:18
【问题描述】:

假设我想在字符串中的每三个字符之后插入一个空格,最后一个字符之后除外。

这是我走了多远:

re.sub('(.{3})','\\1 ',i)

但是对于len(i)%3=0 的情况,我没有找到跳过最后插入的优雅方法。

有什么想法吗?

re.sub('(.{3})$-','\\1 ',i)

根本没有帮助。

谢谢

【问题讨论】:

    标签: python regex


    【解决方案1】:

    使用negative lookahead 来检查匹配项是否不在字符串末尾:

    In [2]: s = "abcdefghi"
    
    In [3]: re.sub(r'(.{3})(?!$)','\\1 ', s)
    Out[3]: 'abc def ghi'
    

    您还可以通过对字符串进行切片并加入切片部分来继续使用非正则表达式选项:

    In [4]: " ".join(s[i: i + 3] for i in range(0, len(s), 3))
    Out[4]: 'abc def ghi'
    

    【讨论】:

    • 谢谢!第一个建议正是我一直在寻找的。​​span>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多