0

我在 Python 中玩了一下 PrettyTable,我注意到 Python2 和 Python 3 中的行为完全不同。有人可以准确地解释一下输出的差异吗?文档中的任何内容都没有给我满意的答案。但是让我们从小代码开始。让我们从创建my_table开始

from prettytable import PrettyTable
my_table = PrettyTable()
my_table.field_name = ['A','B']

它使用 A 列和 B 列创建两个列表。让我们添加行,但假设单元格中的值可以有多行,由 Python 新行 '\n' 分隔,例如列 A 的参数的一些属性.

row = ['parameter1', 'component: my_component\nname:somename\nmode: magic\ndate: None']
my_table.add_row(row)

通常行中的信息可以是任何东西,它只是从其他函数中检索到的字符串。正如你所看到的,它里面有'\n'。我不完全理解的是打印功能的输出。

我在 Python2

print(my_table.get_string().encode('utf-8'))

这让我有这样的输出:

+------------+-------------------------+
|  Field 1   |         Field 2         |
+------------+-------------------------+
| parameter1 | component: my_component |
|            |      name:somename      |
|            |       mode: magic       |
|            |        date: None       |
+------------+-------------------------+

但在 Python3 中,我有:

+------------+-------------+ | 字段 1 | 字段 2 | +------------+-------------+ | 参数1 | 组件:我的组件 | | | 姓名:某人名 | | | 模式:魔法 | | | 日期:无 | +------------+--------------+

如果我完全删除了编码部分,那么在两个版本的 Python 上输出看起来都不错。

所以当我有

print(my_table.get_string())

它适用于 Python3 和 Python2。我应该从代码中删除编码部分吗?假设没有必要是保存吗?问题究竟出在哪里?

4

0 回答 0