如何从Python中的字典中删除u'(unicode)?

use*_*426 6 python unicode dictionary

我有一本字典

{u'value1': {u'Capacity1': 0, u'E1': 'None', u'status': u'ONLINE', u'name': u'value1', u'perf': 'None', u'Id': u'2005', u'id1': u'3000', u'Capacity2': 4}}
Run Code Online (Sandbox Code Playgroud)

如何从键和值中删除u'(它本身是另一个字典?))

谢谢!

Ale*_*lli 5

一种可能性是(假设Python 2):

def encode_dict(d, codec='utf8'):
    ks = d.keys()
    for k in ks:
        val = d.pop(k)
        if isinstance(val, unicode):
            val = val.encode(codec)
        elif isinstance(val, dict):
            val = encode_dict(val, codec)
        if isinstance(k, unicode):
            k = k.encode(codec)
        d[k] = val
    return d

top_d = encode_dict(top_d)
Run Code Online (Sandbox Code Playgroud)

您需要删除(通过.pop)每个Unicode密钥k,然后在编码val后将其插回(使用新编码的)k字节字符串,否则(因为,对于仅由ASCII字符组成的密钥,就是这种情况k == k.encode('utf-8')), Unicode密钥将保留.尝试使用d.get代替d.pop- 它不会做你所要求的.

你是否真的需要你所要求的实际上是非常可疑的; 如果所有的Unicode字符串d(以及其中的嵌入式字符串)仅由ASCII字符组成,那么d == encode_dict(d).然而,"字符串化"形式确实看起来在美学上是不同的,我想这可能是你所追求的.


Hac*_*lic 4

u表示表示unicode

你不需要删除它或做任何事情,只需找到你的代码并进行比较

演示:

>>> type(u'b')
<type 'unicode'>

>>> u'b' == 'b'
True
Run Code Online (Sandbox Code Playgroud)