как напечатать dict, который имеет японское слово, используя python - PullRequest
1 голос
/ 20 апреля 2011

это мой код:

import xlrd,sys
data = xlrd.open_workbook('a.xls')
boss = data.sheets()[3]
print boss.row_values(3)[1]

он может показывать правильное слово:

キャプションサンプル。てすてす。改行もしたいよ

, но поскольку в a.xls много данных, поэтому я добавляю эти данные впродиктуйте в python,

вот так:

stage_dict[stage_number]['boss'][boss_number]['name'] =  boss_row_list[4]

и покажите:

print stage_dict

но покажите это:

'\uff77\uff6c\uff8c\uff9f\uff7c\uff6e\uff9d\uff7b\uff9d\uff8c\uff9f\uff99\u3002\u3066\u3059\u3066\u3059\u3002\u6539\u884c\u3082\u3057\u305f\u3044\u3088\u3002'

такчто я могу сделать,

как распечатать диктовку, используя правильную кодировку,

спасибо

обновлено:

этопростая демонстрация:

#coding:utf-8

a={0:"キャプションサンプル。てすてす。改行もしたいよ"}
b="キャプションサンプル。てすてす。改行もしたいよ"
print a,b

Ответы [ 3 ]

3 голосов
/ 20 апреля 2011

Вы не можете. print(somedict) всегда будет печатать repr() изречения, который является действительным кодом Python, используя escape-последовательности.

Однако, поскольку печать dict должна быть только для отладки, это на самом деле не проблема. Отображение значения из dict должно работать.

1 голос
/ 20 апреля 2011

Печать объекта в Python напечатает, как объект представлен в тексте на английском языке.Отсюда и результат, который вы испытываете.

1 голос
/ 20 апреля 2011

Вы можете получить свой собственный класс из dict и переопределить __str__ метод:

# -*- coding: utf-8 -*-

class MyDict(dict):
    def __str__(self):
        return "{"+", ".join(["%s: %s" % (key, self[key]) for key in self])+"}" 

a = {0:"Velmi žluťoučký kůň"}
b = MyDict({0:"Velmi žluťoučký kůň"})
c = "Velmi žluťoučký kůň"
print(a)
print(b)
print(c)

Печать:

{0: 'Velmi \xc5\xbelu\xc5\xa5ou\xc4\x8dk\xc3\xbd k\xc5\xaf\xc5\x88'}
{0: Velmi žluťoučký kůň}
Velmi žluťoučký kůň

Производный класс будет вести себя точно так же, как и dict, но он будет печатать, используя указанный вами метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...