使用Python2和Python3从PrettyTable打印

时间:2019-03-20 13:57:51

标签: python python-2.7 utf-8 python-3.6 prettytable

我在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 |组件:my_component | | |名称:somename | | |模式:魔术| | |日期:无| + ------------ + ------------------------- +

如果我完全删除了编码部分,似乎在两个版本的Python上输出都可以。

所以当我有

print(my_table.get_string())

它适用于Python3和Python2。我应该从代码中删除编码部分吗?假设没有必要可以节省?问题到底在哪里?

0 个答案:

没有答案
相关问题