【发布时间】:2015-10-07 06:54:18
【问题描述】:
假设我想在字符串中的每三个字符之后插入一个空格,最后一个字符之后除外。
这是我走了多远:
re.sub('(.{3})','\\1 ',i)
但是对于len(i)%3=0 的情况,我没有找到跳过最后插入的优雅方法。
有什么想法吗?
re.sub('(.{3})$-','\\1 ',i)
根本没有帮助。
谢谢
【问题讨论】:
假设我想在字符串中的每三个字符之后插入一个空格,最后一个字符之后除外。
这是我走了多远:
re.sub('(.{3})','\\1 ',i)
但是对于len(i)%3=0 的情况,我没有找到跳过最后插入的优雅方法。
有什么想法吗?
re.sub('(.{3})$-','\\1 ',i)
根本没有帮助。
谢谢
【问题讨论】:
使用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'
【讨论】: