繁体   English   中英

为什么使用lxml的Python 3.4.3无法正确输出print语句?

[英]Why does Python 3.4.3 using lxml not output print statement correctly?

当我尝试遍历lxml教程时,我不禁感到奇怪,为什么当我使用print命令时,即使在pretty_print = True的情况下,屏幕上的输出仍希望将所有内容都放在一行上。

可以这么说,我刚刚安装了Python 3.4.3 64位,并在安装了Python之后安装了lxml-3.4.0.win32-py3.4.exe。

然后,在IDLE或python.exe cmd提示符下,执行以下操作:

from lxml import etree
root = etree.XML('<root><a><b/></a></root>')
print(etree.tostring(root, pretty_print=True))

我(和本教程)期望的是屏幕上的以下输出:

<root>
  <a>
    <b/>
  </a>
</root>

但是我实际上在Windows 7的IDLE和python cmd提示符下都看到的是:

b'<root>\n  <a>\n    <b/>\n  </a>\n</root>\n'

那么,为什么口译员要这样做呢? 有没有办法在单行模式和更普通的标准输出之间切换? 也许更重要的是,如果我想将此XML写入文件,使用lxml的Python是否会坚持将\\ n和其他所有内容放在一行上,而不是按照预期的方式漂亮地打印出来?

谢谢,约翰尼

您将看到字节字符串的表示形式。 您可以直接将字节写入文件:

with open("file.xml", "wb") as output:
    output.write(etree.tostring(root, pretty_print=True))

print需要一个unicode字符串,因此您必须编码为unicode:

print(etree.tostring(root, pretty_print=True, encoding='unicode'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM