
[英]Why does my print statement(python) work in my python 3.4.3 shell, but not the online compiler? Is it because it's a different version?
[英]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.