对.xml文件中<p>内的句子进行编号?</p>

时间:2012-09-28 16:23:51

标签: python xml

我是一名初学程序员并且我坚持这个可能很容易的问题:我想自动为.xml文件的P标签中包含的句子添加数字。因此.xml文件中的示例段落如下所示:

<P>Sentence1. Sentence2. Sentence3.</P>

我想将其转换为:

<P><SUP>1</SUP>Sentence1.<SUP>2</SUP> Sentence2.<SUP>3</SUP> Sentence3.</P>

然而,只有包含至少2个句子的P标签应该编号,如果它只包含1个句子我想保持不变。

这是我到目前为止采用正则表达式的方法:

\.\s.*
# Reliably finds the second sentence, Insert <SUP>2</SUP> after it.
<P>[^>]*<SUP>2
# Finds the beginning of the first sentence if a second sentence exists.

但是我觉得这是一个非常尴尬的方法,我真的不知道如何扩展包含20个或更多句子的段落,或包含许多段落的.xml文档。有没有比正则表达式更好的正则表达式来实现这个或更好的(Python)工具?

1 个答案:

答案 0 :(得分:2)

这样的事情(非常未经测试)可能会起作用

import xml.etree.ElementTree as ET
tree = ET.parse(XML_FILE)
root = tree.getroot()


for p in root.iter('p'):
   sentences = p.text.split('.')
   p.text = ".".join([("<sup>%i<sup>" % count) + sentence for count, sentence in enumerate(sentences)])

tree.write(XML_FILE)