Windows 7 で Python 2.7.3 (x64) と lxml 2.3.6 を使用していることを前置きします。
誰かが助けてくれることを望んでいる、少し奇妙な問題があります。オンラインで解決策が見つかりません。おそらく正しいものを探していません。
とにかく、プログラムで lxml を使用して XML を作成し、これをテキスト ファイルに出力するという問題があります。問題は、lxml が改行をテキストに変換していることです
。ほとんど urlencoding のようですが、HTML は使用していません。 m XML を使用します。
たとえば、次のような単純なテキスト ファイルをメモ帳で作成したとします。
This
is
my
text
次に、いくつかの xml を作成し、このテキストを xml に追加します。
from lxml import etree
textstr = ""
fh = open("mytext.txt", "rb")
for line in fh:
textstr += line
root = etree.Element("root")
a = etree.SubElement(root, "some_element")
a.text = textstr
print etree.tostring(root)
ここでの問題は、印刷の出力が次のようになることです。
<root><some_element>This
is
my
text</some_element></root>
私の目的では、改行は問題ありませんが、
要素はそうではありません。
私が把握できたのは、テキスト ファイルをバイナリ モードで開いているために発生していることです"rb"
(これは、アプリが大きなテキスト ファイルのインデックスを作成しているため、実際に行う必要があります)。ファイルをバイナリ モード"r"
で開かないと、出力に含まれません
(もちろん、インデックス作成は機能しません)。
また、次のように変更してみましetree.tostring
た:
print etree.tostring(root, method="xml")
ただし、出力に違いはありません。
これで、xml テキストを文字列にダンプしてアーティファクトを置き換えることが$#13;
できますが、より洗練されたソリューションを望んでいました。解析するテキスト ファイルが自分の管理下になく、私の知らないうちに、テキスト ファイルが URL スタイルのエンコーディングに変換されている可能性があります。
このエンコーディングが起こらないようにする方法を知っている人はいますか?