问答 [请教] python2.7 读取 yaml 文件中文显示问题

匿名 · 2017年11月20日 · 2393 次阅读

如题,当 yaml 文件中包含中文时,直接 load 后打印出来无法正常显示:

cus:
  - '终端'
  - cus002
  - cus003
detail:
  type: {type1: a}
  dept: dept1
python 脚本如下:
f=open('data.yaml')
data = yaml.load(f)
print (data)
print data['cus'][0].decode('utf-8')
打印出来结果:

{'cus': [u'\u7ec8\u7aef', 'cus002', 'cus003'], 'detail': {'dept': 'dept1', 'type': {'type1': 'a'}}}
终端

期望结果:

{'cus': [‘终端’, 'cus002', 'cus003'], 'detail': {'dept': 'dept1', 'type': {'type1': 'a'}}}
终端

尝试:

修改脚本如下:

f=open('data.yaml',encoding='utf-8')
data = yaml.load(f)
print (data)

报错:

TypeError: 'encoding' is an invalid keyword argument for this function

请教:

如何可以得到期望结果

{'cus': [‘终端’, 'cus002', 'cus003'], 'detail': {'dept': 'dept1', 'type': {'type1': 'a'}}}
终端

谢谢

共收到 2 条回复 时间 点赞
import io
f=io.open('data.yaml',encoding='utf-8')
data = yaml.load(f)
print (data)

忠告一句:弃坑 2.x 吧...

解决方法:

f=open('data.yaml',)
data = yaml.load(f)
print data
print (repr(data).decode('unicode-escape'))

来自知乎

匿名 关闭了讨论 11月21日 19:52
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册