[D]如何阻止dict转str时的unicode转义

TrouGer 2012-03-07 12:10:18
ftest = open("test", "w")
ftest.write(str({'title':u'标题', 'content':u'中文测试'}))
ftest.close()

以上代码执行后,test文件的内容是:
{'content': u'\u4e2d\u6587\u6d4b\u8bd5', 'title': u'\u6807\u9898'}

而不是我想要的:
{'content': '标题', 'title': '中文测试'}

请教各位有什么办法阻止unicode转义吗?

============
我试过如果字符串只包含英文的话就不会转义;
如果不是dict转str,而是直接ftest.write(u'中文')的话也不会转义。

--------------------------
Double行动:
原帖分数:100
帖子加分:100
...全文
205 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel_su 2012-03-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 trouger 的回复:]
因为str或repr直接能把字典等对象转成类似JSON的格式,所以如果unicode能不做转义的话就能很方便地直接输出包含中文的JSON了。
[/Quote]
那你直接用json模块作输出,不晓得为啥又牵扯到str()...
TrouGer 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 angel_su 的回复:]
通常编码或格式自己写几行代码制定转换一下,犯不着挖祖坟去。
[/Quote]

确实可以自己实现转换。。。不过我就是想问问有没有直接能转的。
因为str或repr直接能把字典等对象转成类似JSON的格式,所以如果unicode能不做转义的话就能很方便地直接输出包含中文的JSON了。
TrouGer 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 thundor 的回复:]

谁让你用str强转的。你可以用引号引起来啊
[/Quote]

我这只是举个例子而已。实际应用中的字典是用一段代码生成的,又不是以字面形式写在代码里的,怎么可能用引号引起来。。。。。
kkme88 2012-03-07
  • 打赏
  • 举报
回复
输出的时候直接用%s 就可以转回到中文
test = {'title':u'标题', 'content':u'中文测试'}
for k, v in test.items(): print "%s: %s" % (k, v)
angel_su 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 thundor 的回复:]

谁让你用str强转的。你可以用引号引起来啊
[/Quote]哈哈,逗。通常编码或格式自己写几行代码制定转换一下,犯不着挖祖坟去。
zengna_com 2012-03-07
  • 打赏
  • 举报
回复
谁让你用str强转的。你可以用引号引起来啊

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧