你可以使用 BeautifulSoup 套件:
安装:
pip install bs4
如果觉得 html 解析器不敷使用,参考文档安装其他适合的解析器。
如果想要详细了解 BeautifulSoup 也请参考官方文档(有中文版本)。
测试档:
以下是我使用的测试文件:
# delete.txt
126
147
# test.xml
代码:
from bs4 import BeautifulSoup
with open('test.xml') as reader:
xml = reader.read()
deleted_id = []
with open('delete.txt') as reader:
for line in reader:
line = line.strip()
deleted_id.append(line)
def has_delete_id(tag):
return tag.name=='re' and tag.id.string in deleted_id
soup = BeautifulSoup(xml, 'html.parser')
tags = soup(has_delete_id)
for tag in tags:
tag.decompose()
print(soup.prettify())
程式输出:
123
abc
135
abc
代码说明:
首先我们从 Beautiful Soup 的套件中汇入 BeautifulSoup 类
from bs4 import BeautifulSoup
接著分别从 delete.txt 和 test.xml 中读出要删除的 id 和主要的 xml 内容,下一步是实体化生成一个 BeautifulSoup对象 soup, 我们采用 html.parser 解析器去解析 xml:
soup = BeautifulSoup(xml, 'html.parser')
在此我们定义了一个用於过滤的 function has_delete_id,每一个在 xml 中的tag 只要是
def has_delete_id(tag):
return tag.name=='re' and tag.id.string in deleted_id
接著 soup(has_delete_id) 会帮助我们找到欲删除的 tag,接著走访搜索出来的这些 tag 并呼叫方法 decompose() 来从文件中删除该标签。
最後 soup.prettify()可以帮助我们输出修改後的文件。