Я немного играю с 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. Должен ли я удалить часть кодирования из кода? Можно предположить, что в этом нет необходимости? Где именно проблема?