Отладочная печать строки Unicode с обозначением \ U

У меня есть словарь, содержащий строки с символами Unicode:

d = {'middle': "middle is:\U0001f004."}

В целях отладки я хотел бы распечатать d и получить вывод с той же нотацией:

print(d)
{'middle': "middle is:\U0001f004."}

Как мне это сделать?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
508
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

При выводе строки закодируйте ее с помощью unicode_escape, например: string.encode('unicode_escape').

d - это надиктовка. У дикта нет метода encode.
XPlatformer 04.12.2018 15:29

Правильно, вы можете вызвать это только по строке. Вы можете использовать понимание dict, чтобы вызвать его для каждой пары ключ-значение в dict: {k: v.encode('unicode_escape') for k, v in d.items()}.

jxpp 04.12.2018 15:33

тогда это не сработает для списка. Или диктат. Мне нужно что-то более общее. Отладка вещей со строками Unicode в.

XPlatformer 04.12.2018 15:35

... тогда я получаю b"{'middle': 'middle is:\\U0001f004.'}". Я просил {'middle': 'middle is:\U0001f004.'}. Еще предстоит пройти ... Все, что мне нужно, это простой способ отладить и распечатать некоторые переменные в моем коде.

XPlatformer 04.12.2018 15:55

Наконец-то мы знаем, что вы используете Python3!

Stop harming Monica 04.12.2018 16:12

Вы можете закодировать строковое представление словаря и закодировать его с помощью unicode_escape. Это вернет объект bytes, который вы захотите снова декодировать, чтобы получить строку.

d = {'middle': 'middle is:\U0001f004.'}
print(str(d).encode('unicode_escape').decode())

Выходы:

{'middle': 'middle is:\U0001f004.'}

Это должно работать в широком диапазоне ситуаций, но, вообще говоря, убедиться, что напечатанная строка соответствует коду, используемому для создания какой-либо структуры данных, невозможно.

Ответ принят как подходящий

Для этой цели в Python 3 есть функция ascii. Любой символ за пределами набора символов ASCII отображается как escape-код:

>>> d = {'middle': "middle is:\U0001f004."}
>>> d
{'middle': 'middle is:?.'}
>>> print(ascii(d))
{'middle': 'middle is:\U0001f004.'}

Это простое и точное решение.

XPlatformer 05.12.2018 20:23

Мне нравится, как на этот вопрос ответил пользователь, у которого есть золотая партия как в Python, так и в Unicode, и у которого есть изображение профиля, то есть его собственное имя, закодированное в ASCII :-D

XPlatformer 06.12.2018 12:14

@XPlatformer, вы первый, кто прокомментирует мою фотографию в профиле. ?

Mark Tolonen 06.12.2018 15:37

Другие вопросы по теме