如何将unicode dict转换为字符串

时间:2012-06-21 13:54:19

标签: python type-conversion

我的问题如下。我们有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方言差异。

任何解决方法都不同于在数据结构上递归迭代?

2 个答案:

答案 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() )