使用点分隔符回复sub多次更换后

2024-04-20 10:19:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在打电话回复sub在相当大的文本块上。奇怪的是,16次替换之后,似乎突然停止了替换任何东西。但是如果我去掉了DOTALL标志,那么它突然又能工作了。你知道吗

我的输入文件:

<a>
<a>
<a>
<a>
.... (repeats about 100 times)

我使用的代码/正则表达式:

import re
file = open("temp.txt", 'r')
text = ''
for line in file:
    text += line
print re.sub(".*", "", text, re.DOTALL)

打印内容:

(15 blank lines)



...
<a>
<a>
<a>
...

显然,应该返回的是一个空字符串。奇怪的是,如果DOTALL被排除在外,那么我会得到所有的空行(换行符按预期保留)。如果我用其他regex字符串尝试这个,那么它会正确运行这些字符串,但最多只能运行15次

你知道为什么会这样吗?还是我疯了?你知道吗


Tags: 文件字符串代码text文本importre标志
1条回答
网友
1楼 · 发布于 2024-04-20 10:19:27

^{}的第四个参数是count,不是flags,应该用关键字参数flags=指定它。你知道吗

print re.sub(".*", "", text, flags=re.DOTALL)

如果没有关键字参数,则表示count=16(关于DOTALL=16);因此最多只能进行16次更换。你知道吗

相关问题 更多 >