【发布时间】:2016-12-26 20:50:08
【问题描述】:
我有一个遵循这个结构的超大文档(>5,000 个这样的实例):
<Questions>
<QuestionID>558013</QuestionID>
<Question>All of the following materials are categorized as <chr8220>fine art<chr8221> EXCEPT</Question>
<Answer1>textiles</Answer1>
<Answer2>paintings</Answer2>
<Answer3>drawings</Answer3>
<Answer4>sculptures</Answer4>
<Answer5>architecture</Answer5>
<AnswerGuide>Textile is not included in the category of fine art. Traditionally, textiles have been categorized as craft art.</AnswerGuide>
<TypeID>1</TypeID>
<Source>6,1,3</Source>
<Footnote />
<CardTypeID>0</CardTypeID>
<Year>2016</Year>
<SubjectID>41</SubjectID>
<QuesNumber>4</QuesNumber>
<AuxNum>4</AuxNum>
<RandList>43512</RandList>
<ResourceTypeID>382</ResourceTypeID>
<TreeKey>01/01/01/</TreeKey>
<TestID>41901</TestID>
<DiffShort>N</DiffShort>
<CardType />
</Questions>
我不需要从 CardType 到 TypeID 的字段,这样可以更轻松地删除这些字段。目前,我只是使用 Notepad ++ 来编辑这个 XML,并且想不出一个简单的方法来删除所有这些字段及其内容。有可能这样做吗?理想情况下,它会将上述内容简化为:
<Questions>
<QuestionID>558013</QuestionID>
<Question>All of the following materials are categorized as <chr8220>fine art<chr8221> EXCEPT</Question>
<Answer1>textiles</Answer1>
<Answer2>paintings</Answer2>
<Answer3>drawings</Answer3>
<Answer4>sculptures</Answer4>
<Answer5>architecture</Answer5>
<AnswerGuide>Textile is not included in the category of fine art. Traditionally, textiles have been categorized as craft art.</AnswerGuide>
</Questions>
【问题讨论】:
-
实现此目的的一种方法是使用正则表达式。您可以选择所需的部分,然后将其包装在
标记中以创建新的 XML 文件。适用于您的案例的一个有用的正则表达式(Python 兼容): (\d+) \n\s+(.+) \n\s+(\w+) Answer1>\n\s+ (\w+) \n\s+(\w+) \n\s+(\w+) \n\ s+(\w+) \n\s+(.+) -
哦,不,@caped114!现代编程的一个事实规则(刻在石板上的某处)是不要运行 regex on X/HTML 文档,因为这些不是自然语言。