这是我的代码:
import xlrd,sys
data = xlrd.open_workbook('a.xls')
boss = data.sheets()[3]
print boss.row_values(3)[1]
它可以显示正确的词:
キャプションサンプル。てすてす。改行もしたいよ
但因为a.xls有很多数据,所以我将这些数据附加到python中的dict,
像这样: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
答案 0 :(得分:3)
你做不到。 print(somedict)
将始终使用转义序列打印dict的repr()
,这是有效的python代码。
但是,由于打印dict应该只是调试,所以这不是一个真正的问题。显示dict中的值应该有效。
答案 1 :(得分: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
完全相同,但它将使用您指定的方法打印。
答案 2 :(得分:1)
在Python中打印对象将打印如何用英文文本表示对象。因此,您正在经历的结果。