正则表达式每三个字符插入一次空格,除了行尾

时间:2015-10-06 22:49:11

标签: python regex

鉴于我想在字符串中的每第三个字符后插入一个空格,除了在最后一个字符之后。

这是我走了多远:

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

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

有什么想法吗?

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

根本没用。

由于

1 个答案:

答案 0 :(得分:2)

使用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'