【问题标题】:Remove 'u' in JSON dictionary删除 JSON 字典中的 'u'
【发布时间】:2019-09-15 23:40:17
【问题描述】:

我希望通过json文件使用字典加载。但是,每个项目都包含字符“u”。我需要删除'u's。

我尝试了转储,但它不起作用。

import ast
import json

data= {u'dot',
 u'dog',
 u'fog',
 u'eeee'}

res = eval(json.dumps(data))
print res

我希望得到:{ '点', '狗', '多雾路段, 'eeee' }

但错误是:

TypeError: set([u'eeee', u'fog', u'dog', u'dot']) 不是 JSON 可序列化的

【问题讨论】:

标签: python json


【解决方案1】:

u 开头的字符串是unicode 字符串。

在你的情况下,这与问题无关:

data= {u'dot',
 u'dog',
 u'fog',
 u'eeee'}

这将创建一个集合并将结果存储在数据变量中。 json 序列化程序无法处理集合,因为 json 规范没有提及它们。如果将其更改为列表,则序列化程序可以处理数据:

res = set(eval(json.dumps(list(data))))

在这里,我将 data 变量转换为列表以对其进行序列化,然后将其转换回集合以将结果存储在 res 变量中。

或者,您可以直接要求 Python 将 unicode 字符串转换为字符串,使用如下代码:

res = {x.encode("utf-8") for x in data}
print(res)

【讨论】:

  • 因为提到了python的unicode转换,并给出了详细的答案而被投票赞成
  • 谢谢,set很好用,换成dictionary还是不行,例如:My_Dict = {u'animal': [u'dog', u'cat'] , u'food': [u'rice', u'bread', u'milk'] } some_other_dict = json.loads(json.dumps(My_Dict)) 打印 some_other_dict (res is:{u'food': [u 'rice', u'bread', u'milk'], u'animal': [u'dog', u'cat']})
  • 更复杂的类型将需要更多的工作来解析。 Here's a simple function 让您了解如何在一次调用中解析字典、集合或列表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-12
  • 1970-01-01
  • 2017-07-09
  • 2012-04-05
  • 2012-10-10
相关资源
最近更新 更多