我的代码:
import urllib
import re
xml = urllib.urlopen('url').read()
Run Code Online (Sandbox Code Playgroud)
我有兴趣从 xml 文件中删除某些标签及其内容,因此,我尝试使用正则表达式。
例如:
re.findall(r'<fig(.*?)</fig>', xml, re.DOTALL)
Run Code Online (Sandbox Code Playgroud)
返回匹配项且非空。
然而,
re.sub(r'<fig(.*?)</fig>', ' ', xml, re.DOTALL)
Run Code Online (Sandbox Code Playgroud)
不执行任何操作,xml 字符串未更改。我很困惑为什么,请帮忙。
的第四个参数re.sub不是 a flags,而是 a counts。的值为re.DOTALL16(至少在 Python 2.7 / 3.4 中)。所以re.sub(.., re.DOTALL)只会更换16次。
指定flags为关键字参数将解决您的问题:
re.sub(r'<fig(.*?)</fig>', ' ', xml, flags=re.DOTALL)
Run Code Online (Sandbox Code Playgroud)
除此之外,re.sub返回替换的字符串,而不是就地更改第三个参数。确保您已分配回函数的返回值。
| 归档时间: |
|
| 查看次数: |
2587 次 |
| 最近记录: |