如何用Python打印包含日文的字典

1 投票
3 回答
511 浏览
提问于 2025-04-16 16:05

这是我的代码:

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 个回答

1

在Python中,打印一个对象会显示这个对象用英文文本表示的样子。所以你看到的结果就是这个原因。

3

你不能这样做。print(somedict) 这个命令总是会打印出字典的表示形式,也就是用转义字符表示的有效 Python 代码。

不过,实际上打印字典一般只是用来调试,所以这并不算什么大问题。从字典中显示一个值应该是可以正常工作的。

1

你可以从 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 一样工作,但它会使用你指定的方法来打印内容。

撰写回答