5

odfpy を使用してプログラムのレポートを作成しようとしています。私の考えは、[[[e_mail_address]]] のような各キーワードを検索し、データベースの単語に置き換えることです。odfpy api で関数テキストを見つけましたが、文字列に変換すると書式が失われます。odfpy インストール ファイルにドキュメントがあります: api-for-odfpy.odt。ポイント 6.2 Teletype モジュールでは、ドキュメントからすべてのテキストを取得してリストに入れる方法が書かれています。

from odf import text, teletype
from odf.opendocument import load

textdoc = load("my document.odt")
allparas = textdoc.getElementsByType(text.P)
print teletype.extractText(allparas[0])

そして今、現在のテキストを別のテキストに置き換える方法を探しています。多分:

text.Change()

しかし、それを使用すると常にエラーが発生します。odfpy を使用した経験がある場合は、助けてください。

4

1 に答える 1

8

私はすでに答えを見つけました:

textdoc = load("myfile.odt")
texts = textdoc.getElementsByType(text.P)
s = len(texts)
for i in range(s):
    old_text = teletype.extractText(texts[i])
    new_text = old_text.replace('something','something else')
    new_S = text.P()
    new_S.setAttribute("stylename",texts[i].getAttribute("stylename"))
    new_S.addText(new_text)
    texts[i].parentNode.insertBefore(new_S,texts[i])
    texts[i].parentNode.removeChild(texts[i])
textdoc.save('myfile.odt')
于 2014-12-08T09:44:39.547 に答える