为什么Python 3.4.3 使用lxml 打印语句输出不正确?
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>
但我在 IDLE 和 Windows 7 中的 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'))
当我尝试 运行 通过 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>
但我在 IDLE 和 Windows 7 中的 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'))