当我使用 json.loads 时,你是啥? [复制]
Posted
技术标签:
【中文标题】当我使用 json.loads 时,你是啥? [复制]【英文标题】:What are the u's when I use json.loads? [duplicate]当我使用 json.loads 时,你是什么? [复制] 【发布时间】:2012-03-01 08:08:34 【问题描述】:我一直在编写一个 Python 脚本来解析来自 Soundcloud API 的 JSON 信息,我只是想知道当我使用 json.loads(val) 时“u”是什么以及如何将 JSON 信息存储到没有 u 的对象?
即为什么会有你:
>>> json.loads('["foo", "bar":["baz", null, 1.0, 2]]')
[u'foo', u'bar': [u'baz', None, 1.0, 2]]
请参阅此处的“解码 JSON”部分以进一步了解我的意思:
http://docs.python.org/library/json.html
【问题讨论】:
另一个有用的帖子:***.com/questions/13940272/… 【参考方案1】:Unicode 字符串。请参阅Python Tutorial。
在 Python 源代码中,Unicode 文字被编写为前缀为“u”或“U”字符的字符串:u'abcdefghijk'。
——Unicode Literals in Python Source Code
【讨论】:
【参考方案2】:u'
s 表示应该创建一个 Unicode 字符串。
json.dump
将字符串转换为 unicode 字符串并且没有留下任何痕迹,因为 json.load
无法转换回来,这很糟糕。
要转换为字符串对象,请使用PyYAML:
>>> import yaml
>>> yaml.load('["foo", "bar":["baz", null, 1.0, 2]]')
>>> ['foo', 'bar': ['baz', None, 1.0, 2]]
但要小心!如果由于某种原因您json.dump
ed 包含对象字符串和 unicode 字符串的对象,yaml
会将所有内容作为对象字符串加载(尽管这确实是json.dump
的错)
【讨论】:
以上是关于当我使用 json.loads 时,你是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
JSONDecodeError,在 Django 中使用 json.loads 时
python爬虫的一个问题,json.loads()不式转化字符串为dict类型吗?
在 python 中使用 bson.json_util.loads 时如何忽略时区?