将JSON转换为Python字典将双引号替换为单引号,并在每个双引号打开实例之前添加“u”

时间:2016-03-26 07:56:34

标签: python json dictionary

我正在使用以下过程来获取json文件并将其分解为我可以进一步使用的字典文件。我正在使用的代码如下:

import urllib
import json

pricelist_link="http://foo.com/test.json"

price_instance=urllib.urlopen(pricelist_link)
print type(price_instance)

parsed_price_data = json.loads(price_instance.read())
print type(parsed_price_data)
print parsed_price_data

这似乎是执行此操作的标准方法(我已经看到了使用urllib2的建议,但是这对我没有产生不同的结果。

当我在浏览器中查看JSON文件时,它显示正常,带双引号:

{"AK-47 | Aquamarine Revenge (Battle-Scarred)":{"2016-01-26":{"price":821,"count":19},"2016-01-27":{"price":762,"count":24},"2016-01-28":{"price":745,"count":22},"2016-01-29":...

但是,当我打印“parsed_price_data”时,它会在单引号前显示u

{u'P250 | Muertos (Battle-Scarred)': {u'2016-03-13': {u'count': 3, u'price': 118}, u'2016-03-17': {u'count': 3, u'price': 129}, u'2016-03-01': {u'count': 

我并不担心双引号会引用单引号,但u是什么?如果没有繁琐的正则表达式,有没有一种简单的方法可以解决这个问题?

3 个答案:

答案 0 :(得分:2)

String1 ='abcd' 字符串2 = u'abcd'

不要惊慌。 'u'表示Unicode,json将字符串值转储为Unicode类型。您可能不需要修复它,因为在python中如果您尝试在上面的示例中将'string1'与'string2'进行比较,则返回True。

我不确定这一点,但我认为在python3 +默认情况下所有字符串都是Unicode,而'u'前缀用于旧版本。所以我的猜测是你正在使用python 2.7。

答案 1 :(得分:0)

前缀send(option)只是对象类型的指示,即u而不是unicode(请参阅this)。

如果您希望以与浏览器相同的方式查看str,则可以执行以下操作:

parsed_price_data

答案 2 :(得分:0)

你' 字符串'是python代码中的unicode representation,以及控制台输出(从打印结果中看到)。

您的json源文件应该由utf-8编码,因为json.load使用的默认编码是utf-8。