gpt4 book ai didi

python - 多次替换后使用 DOTALL 中断 re.sub

转载 作者:太空宇宙 更新时间:2023-11-03 15:08:52 26 4
gpt4 key购买 nike

我一直在尝试对相当大的文本 block 调用 re.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 被排除在外,那么我会得到所有空行(换行符按预期保留)。如果我用其他正则表达式字符串尝试这个,那么它会正确运行这些字符串,但最多只能运行 15 次。

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

最佳答案

re.sub 的第 4 个参数是 count,而不是 flags,您应该使用关键字参数 flags= 指定它。

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

如果没有关键字参数,则表示 count=16 (re.DOTALL = 16);结果替换最多只发生 16 次。

关于python - 多次替换后使用 DOTALL 中断 re.sub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29597401/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com