Python从xml中提取文本

时间:2015-11-30 17:39:28

标签: python regex xml

我想用python从XML文件中提取包含标签的文本,以及标签中的标签

这就是我的文件的样子:

<p>blablabla</p>
<p>blablabla / blablabla,</p>
<p>blablabla</p>
<p>blablabla / blablabla / blablabla</p>
<p>blablabla.</p>

首先我想找到整个条目(文件中的一个整个条目看起来像上面那个),然后我想在每个&#34; /&#34;之后将条目分成很多部分,最后删除所有条目重新标记"<p>" and "</p>"

我认为这可以做到(python2.7):

first_results = []

lines = open(sys.argv[1])

for l in lines:
    re.match(r'<p>[\s\S]*?\.<\/p>', l)
    l = l.split("/")
    first_results.append(l)

for b in first_results:
    b = re.sub(r'(<p>)|(</p>)', r'', b)

我的问题是:这是一些无法正常工作的问题。我可以用正则表达式获得正确的输入,但我不知道如何做其余的事情。有一个更好的方法吗?最后,我希望将文本分成&#34; /&#34;并用制表符分隔,类似于:

blablabla   blablabla   lablabla   blablabla   blablabla ect...

对此最好的方法是什么?在这一点上,我想说我是python的新手,但已经是一个大粉丝:)

1 个答案:

答案 0 :(得分:0)

首先,请看这篇文章:RegEx match open tags except XHTML self-contained tags。这与您的情况高度相关。

其次,Python在#conteudo p { text-align: center; font-size: 180%; } #conteudo p:first-of-type { /* Comment the margin-top attribute and the height of the #conteudo div will change. It shouldn't. */ margin-top: 150px; margin-bottom: 10px; } #conteudo p:last-of-type { margin: 0; color: #004182; } 包中附带了一个非常好的XML解析器,附带了该语言。