【问题标题】:remove Unicode from Dictionary data从字典数据中删除 Unicode
【发布时间】:2014-12-06 03:19:23
【问题描述】:

我有以下字典

  My_Dict= { u'Apple': [u'A' , u'B'] ,u'orange': [u'C' , u'D'] }

我有另一本字典,数据相同,但不是 Unicode

  Dict= { 'Apple': ['A' , 'B'] ,'orange': ['C' , 'D'] }

我正在尝试比较两个字典,但它说两个字典不一样。我认为是因为 Unicode

有什么方法可以通过从 My_dict 中删除 Unicode 或将 'Dict' 转换为 Unicode 来比较这两个字典?

我得到 Unicode 的原因是因为我使用的是 S 表达式解析器。下面是解析器模块的链接以供参考。 http://sexpdata.readthedocs.org/en/latest/

【问题讨论】:

  • 这两个例子是相等的; My_Dict == DictTrue。这是因为 Python 只查看内容(使用默认系统编码 ASCII)来比较 Unicode 和字节字符串。
  • 换句话说,else 出了点问题;您的实际字典不相等,不是因为一个具有 unicode 字符串和另一个字节字符串,而是它们的内容不同。
  • 你是对的。上面的dicts是一样的。实际上我的字典有这样的数字,而错误就在这些数字中。 Python 给出错误,因为它说 u'9.08' 不等于 '9.080' 有人可以帮忙吗?
  • 那是因为它们不是数字而是字符串,内容不同。您是否尝试过将它们转换为float()
  • 嗨,我刚刚从所有内容中删除了尾随零。所以现在字典匹配了......我使用了 .rstrip("0") 并且它有效!感谢所有帮助,否则我会浪费时间从 dict 转换 Unicode 的东西

标签: python python-2.7 dictionary unicode


【解决方案1】:

也许对两者都执行 json.dumps。

json.dumps({ u'Apple': [u'A' , u'B'] ,u'orange': [u'C' , u'D'] })
Output: `'{"orange": ["C", "D"], "Apple": ["A", "B"]}'

json.dumps({ 'Apple': ['A' , 'B'] ,'orange': ['C' , 'D'] })
Output: `'{"orange": ["C", "D"], "Apple": ["A", "B"]}'`

【讨论】:

    【解决方案2】:

    要从字典中删除 Unicode 试试:

    import json, ast
    My_Dict= { u'Apple': [u'A' , u'B'] ,u'orange': [u'C' , u'D'] }
    print(ast.literal_eval(json.dumps(My_Dict)))
    

    【讨论】:

    • 谢谢救了我的命,有一个 Json 字符串,但在通过 subprocess+curl 将其发送到 google api 时遇到问题,该技巧删除了 Unicode 并将字符串格式化为 dict 并被API。
    【解决方案3】:
    import json
    some_other_dict = json.loads(json.dumps(My_Dict))
    print(some_other_dict)
    

    试试这个。它将删除 unicode。

    【讨论】:

      【解决方案4】:

      要删除 unicode,您必须从 unicode 转换键和值。

      检查以下代码

      My_Dict= { u'Apple': [u'A' , u'B'] ,u'orange': [u'A' , u'B'] }
      Dict= { 'Apple': ['A' , 'B'] ,'orange': ['C' , 'D'] }
      
      My_Dicts={}
      for i, v in My_Dict.items():
        ky= i.encode('ascii','ignore')
        if type(v)is list:My_Dicts[ky]=[ item.encode('ascii') for item in v ]
        else: My_Dicts[ky] =v.encode('ascii','ignore')
      My_Dict=My_Dicts
      
      print My_Dict
      print Dict
      

      输出

      {'orange': ['C', 'D'], 'Apple': ['A', 'B']}
      {'orange': ['C', 'D'], 'Apple': ['A', 'B']}
      

      【讨论】:

      猜你喜欢
      • 2016-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-30
      • 1970-01-01
      • 2020-06-02
      • 2016-03-19
      相关资源
      最近更新 更多