【发布时间】:2012-06-21 13:54:18
【问题描述】:
我的问题如下。我们有所有键和值都为 unicode 的 dict,例如:
ab = {
u'a': u'A',
u'b': u'B',
u'c': u'C',
}
我想把它转换成一个字符串。显然,当我这样做时:
str(ab)
我会收到:
"{u'a': u'A', u'c': u'C', u'b': u'B'}"
如果我这样做:
unicode(ab)
我会收到:
u"{u'a': u'A', u'c': u'C', u'b': u'B'}"
我的预期结果是:
"{'a': 'A', 'c': 'C', 'b': 'B'}"
目前我发现,如果我执行 json.dumps,它会正确地将其转换为字符串,在每个键和值之前没有额外的 'u',但它也会将 True 更改为 true 和其他 javascript 方言差异。
除了对我的数据结构进行递归迭代之外,还有什么解决方法吗?
【问题讨论】:
-
你想用这个字符串表示来达到什么目的?
-
我同意这里的目标对于实现这一点的最佳方式(或不这样做)可能很重要。
-
遗留代码,它只是假设我们在数据库中有可以在检索时解码的字符串化数据结构
-
@Drachenfels 如果你能改变它,那么为了你自己,请这样做。从数据库的角度来看,从代码的角度来看,这是一个糟糕的想法。
-
我很清楚,最近我们升级了django版本,所有字段都是unicode,所以我们的字典是unicode的,我们的代码是将dicts转换为string,unicodes意味着我们完全数据库中损坏的数据。最后,我对此无能为力,这是一个巨大的失败。