我将通过表明我在 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 样式编码。
有谁知道防止这种编码发生的方法?