我的问题如下。我们有dict,其所有键和值都是unicode,例如:
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.dump,它会在每个键和值之前将其正确转换为字符串,而不会额外添加'u',但它也会将True更改为true和其他javascript方言差异。
任何解决方法都不同于在数据结构上递归迭代?
答案 0 :(得分:8)
不,您需要手动将每个项目转换为字符串,然后将字典串起来,并注意除非Unicode数据全部是ASCII,否则您可能会遇到问题。做出这个假设,你可以使用字典理解来使它更快更简洁:
print({str(key): str(value) for key, value in ab.items()})
{'a': 'A', 'c': 'C', 'b': 'B'}
如果你使用的是2.7.3之前的Python版本,没有字典理解:
dict((str(key), str(value)) for key, value in ab.items())
答案 1 :(得分:0)
如果您使用的是python 2.x:
dict( map(str, item) for item in ab.iteritems() )