Печать из PrettyTable с Python2 против Python3 - PullRequest
0 голосов
/ 20 марта 2019

Я немного играю с PrettyTable в Python и заметил совершенно разное поведение в Python2 и Python 3. Может кто-нибудь точно объяснить мне разницу в выводе? Ничто в документации не дало мне удовлетворительного ответа за это. Но давайте начнем с небольшого кода. Давайте начнем с создания my_table

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

Создает таблицу из двух столбцов со столбцом A и столбцом B. Давайте добавим к ней строку, но предположим, что значение в ячейке может содержать несколько строк, разделенных новой строкой Python '\ n', в качестве примера некоторые свойства параметра из колонки А.

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 | компонент: мой_компонент | | | имя: somename | | | режим: магия | | | дата: нет | + ------------ + ------------------------- +

Если я полностью удаляю часть кодирования, похоже, что вывод выглядит нормально на обеих версиях Python.

Итак, когда у меня есть

print(my_table.get_string())

Работает на Python3 и Python2. Должен ли я удалить часть кодирования из кода? Можно предположить, что в этом нет необходимости? Где именно проблема?

...