免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3419 | 回复: 5
打印 上一主题 下一主题

请教unicode转义遇到的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2019-02-19 21:00 |只看该作者 |倒序浏览
一个文件里有一段文本:
b'{"status":true,"data":{"id":2898,"word_number":"A04689","tw_word":"\\u9b54","cn_word":"\\u9b54","content":"\\u6b64\\u5b57\\u59cb\\u898b\\u65bc\\u7bc6\\u6587\\u3002\\u7bc6\\u6587\\u4f5c<img src=\\"http:\\/\\/bs.chinese-linguipedia.org\\/upload\\/word_sources\\/remark\\/A04689b001.png\\" style=\\"width: 20px;height: 20px;\\" \\/>\\uff0c\\u5f9e\\u9b3c\\u3001\\u9ebb\\u8072\\u3002\\u5f9e\\u9b3c\\uff0c\\u4ee5\\u8868\\u70ba\\u9b3c\\u602a\\uff1b\\u9ebb\\u8072\\uff0c\\u4ee5\\u793a\\u97f3\\u8b80\\uff0c\\u800c\\u4e0d\\u517c\\u7fa9\\u3002\\u6977\\u66f8\\u4e4b\\u5f62\\uff0c\\u6cbf\\u81ea\\u7bc6\\u6587\\u4e4b\\u5f62\\u4ee5\\u5b9a\\u9ad4\\u3002\\u5728\\u516d\\u66f8\\u4e2d\\u5c6c\\u65bc\\u5f62\\u8072\\u3002","author":"\\u8521\\u4fe1\\u767c","checker":"\\u674e\\u934c","created_at":null,"updated_at":null,"sources":[{"key":"\\u7bc6\\u6587","value":[{"type":"4","img":"http:\\/\\/bs.chinese-linguipedia.org\\/upload\\/word_sources\\/4\\/A04689l001.png","source":"\\u8aaa\\u6587"}]},{"key":"\\u6977\\u66f8","value":[{"type":"6","img":"http:\\/\\/bs.chinese-linguipedia.org\\/upload\\/word_sources\\/6\\/A04689n001.png","source":"\\u6559\\u80b2\\u90e8\\u6a19\\u6e96\\u6977\\u66f8"}]}],"radical":{"tw_word":"\\u9b54","radical":"\\u9b3c","other_count":11,"radical_count":10}}}'
初学python,想把其中的unicode字符转化为中文,开始想直接用encode('utf-8').decode('utf-8')的方法转换,结果却没有任何变化,搞不明白,以为反斜杠的问题,想把多余的反斜杠去掉,结果用replace去除反斜杠的时候真把人搞晕了,网上也看了一些解释,但用起来仍很糊涂,请大神指点迷津!


论坛徽章:
0
2 [报告]
发表于 2019-02-20 16:53 |只看该作者
C:\>chcp 936
Active code page: 936

C:\2>python 4.py
b'{"status":true,"data":{"id":2898,"word_number":"A04689","tw_word":"魔","cn_word":"魔","content":"此字始見於篆文。篆文 作<img src="http:\/\/bs.chinese-linguipedia.org\/upload\/word_sources\/remark\/A04689b001.png" style="width: 20px;height: 20px;" \/>,從鬼、麻聲。從鬼,以表為鬼怪;麻聲,以示音讀,而不兼義。楷書之形,沿自篆文之形以定體。在六書中屬於形聲。","author":"蔡信發","checker":"李鍌","created_at":null,"updated_at":null,"sources":[{"key":"篆文","value":[{"type":"4","img":"http:\/\/bs.chinese-linguipedia.org\/upload\/word_sources\/4\/A04689l001.png","source":"說文"}]},{"key":"楷書","value":[{"type":"6","img":"http:\/\/bs.chinese-linguipedia.org\/upload\/word_sources\/6\/A04689n001.png","source":"教育部標 準楷書"}]}],"radical":{"tw_word":"魔","radical":"鬼","other_count":11,"radical_count":10}}}'


4.py
  1. with open("4.txt", "r", encoding="unicode-escape") as f:
  2.    a = f.read()

  3. print(a.encode('UTF-8').decode('unicode-escape'))
复制代码


论坛徽章:
0
3 [报告]
发表于 2019-02-20 17:10 |只看该作者
问题好像是字符串中\\表示单反斜杠,\是特殊字符,无法直接把\\替换为\。反正因为反斜杠出现一些在菜鸟如我看来奇奇怪怪的问题。
看来得找另外的方法,呼唤大神!

论坛徽章:
0
4 [报告]
发表于 2019-02-20 17:12 |只看该作者
回复 2# csccyab
先谢过大神!然后再学习。

论坛徽章:
0
5 [报告]
发表于 2019-02-20 17:17 |只看该作者
你看看行不行,以上是在 windows 上运行, 如果是 linux ,  putty 也應該能正常显示

论坛徽章:
0
6 [报告]
发表于 2019-02-21 11:14 |只看该作者
回复 5# csccyab
十分感谢!我也是windows,结果正常。原来是\\u9b54之类是unicode-escape编码,受教了!

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP