Лучший тип вывода и методы кодирования для функций __repr __ ()?

В последнее время я У нас было много проблем с __ repr __ () , format () и кодировками. Должны ли выходные данные __ repr __ () кодироваться или быть строкой в ​​кодировке Юникод? Существует ли наилучшая кодировка для результата __ repr __ () в Python? То, что я хочу вывести, имеет символы не ASCII.

Я использую Python 2.x и хочу написать код, который можно легко адаптировать к Python 3. Таким образом, программа использует

# -*- coding: utf-8 -*-
from __future__ import unicode_literals, print_function  # The 'Hello' literal represents a Unicode object

Вот некоторые дополнительные проблемы, которые имеют меня беспокоит, и я ищу решение, которое решает их:

  1. Печать на терминал UTF-8 должна работать (у меня sys.stdout.encoding установлено в UTF-8 , но было бы лучше, если бы работали и другие случаи).
  2. Передача выходных данных в файл (кодированный в UTF-8) должна работать (в данном случае, sys. stdout.encoding - это Нет ).
  3. Мой код для многих функций __ repr __ () в настоящее время имеет много return… .encode ('utf-8') , и это тяжело. Есть ли что-нибудь более надежное и легкое?
  4. В некоторых случаях у меня даже бывают отвратительные звери, такие как return ('<{}>'. Format (repr (x) .decode ('utf-8'))). encode ('utf-8') , т. е. представление объектов декодируется, помещается в строку форматирования и затем перекодируется. Я хотел бы избежать таких запутанных преобразований.

Что бы вы порекомендовали сделать, чтобы написать простые функции __ repr __ () , которые хорошо себя ведут по отношению к этим вопросам кодирования?

66
задан Eric O Lebigot 13 December 2012 в 03:03
поделиться