12

初心者の言語であるPythonを使用して、ドキュメントからXMLタグを削除しようとしています。これは、正規表現を使用した最初の試みですが、これは本当に最善のアイデアでした。

mfile = file("somefile.xml","w")

for line in mfile:
    re.sub('<./>',"",line) #trying to match elements between < and />

それは惨めに失敗しました。正規表現でどのように行うべきか知りたいです。

第二に、私はグーグルで見つけました:http://code.activestate.com/recipes/440481-strips-xmlhtml-tags-from-string/

これはうまくいくようです。しかし、すべての xml タグを取り除く簡単な方法はありますか? 多分ElementTreeを使用していますか?

4

3 に答える 3

24

これを行う最も信頼できる方法は、おそらくLXMLを使用することです。

from lxml import etree
...
tree = etree.parse('somefile.xml')
notags = etree.tostring(tree, encoding='utf8', method='text')
print(notags)

正規表現を使用して XML を「解析」する際の問題を回避し、エスケープやすべてを正しく処理する必要があります。

于 2012-10-10T16:23:38.513 に答える
15

lxml外部ライブラリを必要としないジェレミアの答えの代替:

import xml.etree.ElementTree as ET
...
tree = ET.fromstring(Text)
notags = ET.tostring(tree, encoding='utf8', method='text')
print(notags)

Python >= 2.5 で動作するはずです

于 2013-09-03T11:16:52.307 に答える
4

通常、正規表現で行うのは通常ではないことに注意してください。エレミヤの答えを参照してください。

これを試して:

import re

text = re.sub('<[^<]+>', "", open("/path/to/file").read())
with open("/path/to/file", "w") as f:
    f.write(text)
于 2012-10-10T15:59:06.527 に答える