我在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。我应该从代码中删除编码部分吗?假设没有必要可以节省?问题到底在哪里?