带有unicode标志的python regex奇怪的长度问题

时间:2018-08-08 12:47:14

标签: python regex unicode

我正面临一个奇怪的正则表达式问题。这是一个用空格替换a-z的简单正则表达式。但它只能替换一定的固定长度。

import re

s = 'aaaaaaaaaaaaabbbbbbbbbbbbbbbbbccccccccccccccccccdddddddddddddddddd'
s = unicode(s, 'utf-8')
s = re.sub(r'[a-z]', ' ', s, re.UNICODE)
print s

运行此代码时,输​​出为

                                ccccccccccccccccdddddddddddddddddd

如果我删除了re.UNICODE标志,那么它可以正常工作。有人可以解释为什么会这样吗。

2 个答案:

答案 0 :(得分:1)

re.sub,如您所见,第四个位置参数是count。尝试做re.sub(r'[a-z]', ' ', s, flags=re.UNICODE)

答案 1 :(得分:1)

re.sub的第四个参数是count。如果要指定flags,则应将其设置为关键字参数:

s = re.sub(r'[a-z]', ' ', s, flags=re.UNICODE)