- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个非常简单的 json,我无法使用 simplejson 模块进行解析。复制:
import simplejson as json
json.loads(r'{"translatedatt1":"Vari\351es"}')
结果:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/pymodules/python2.5/simplejson/__init__.py", line 307, in loads
return _default_decoder.decode(s)
File "/usr/lib/pymodules/python2.5/simplejson/decoder.py", line 335, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/pymodules/python2.5/simplejson/decoder.py", line 351, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Invalid \escape: line 1 column 23 (char 23)
有人知道哪里出了问题以及如何正确解析上面的 json 吗?
那里编码的字符串是:Variées
附言我使用 python 2.5
非常感谢!
最佳答案
那是非常正确的; Vari\351es
包含无效转义,JSON 标准不允许 \
后跟数字。
无论生成该代码的是什么,都应该修复。如果这不可能,您将需要使用正则表达式来删除这些转义符,或将它们替换为有效的转义符。
如果我们将 351
数字解释为八进制数,它将指向 unicode 代码点 U+00E9,é
字符(带尖音符号的拉丁文小写字母 E ).您可以“修复”您的 JSON 输入:
import re
invalid_escape = re.compile(r'\\[0-7]{1,6}') # up to 6 digits for codepoints up to FFFF
def replace_with_codepoint(match):
return unichr(int(match.group(0)[1:], 8))
def repair(brokenjson):
return invalid_escape.sub(replace_with_codepoint, brokenjson)
使用 repair()
可以加载您的示例:
>>> json.loads(repair(r'{"translatedatt1":"Vari\351es"}'))
{u'translatedatt1': u'Vari\xe9es'}
您可能需要调整代码点的解释;我选择八进制(因为 Variées
是一个实际的词),但您需要使用其他代码点进行更多测试。
关于python - 无法用python解析 simplejson ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14674057/
我有 Django 版本 1.7 和 Python 版本 2.7.5 - 我使用 pip install simplejson 和 apt-get install python-simplejson
当我使用像 &simplejson.Json{v}(v 是从文件读取的接口(interface),它的实际数据结构是 map[string]interface{})时,然后显示此错误。详情: 一个名为
我需要解析从 YQL 获得的 json,但我遇到了麻烦,因为我没有得到我需要的结果。我正在使用简单的 json (https://code.google.com/p/json-simple/wiki/
这个问题已经有答案了: How can I parse (read) and use JSON in Python? (5 个回答) 已关闭 6 个月前。 我只是有一个关于 SimpleJSON 文档
我正在尝试使用 django python 向客户端发送带有换行符的 json 字符串: string += u'hello\n' data = {'data':str
我正在尝试将 json 结果存储在 GAE 数据存储中,以便稍后读取。我将它转储到一个字符串中,然后存储它,然后读取它并将其加载回字典中。但加载后我无法再将其作为字典阅读。 result = free
我正在尝试生成一个格式正确的 json 对象以在 javascript 中使用。我试过 simplejson.dumps(string),但它在我的本地机器(在 python shell 中)和在服务
问题是,在我的笔记本电脑中,我有 python 2.7.5 和一些 Simplejson 版本,而在我的 Debian 6 服务器上,我有 Python 2.6.6 和一些 simplejson 版本
这个问题在这里已经有了答案: Items in JSON object are out of order using "json.dumps"? (8 个答案) 关闭 9 年前。 在 Django
我正在使用 Mega API 和 Python,希望生成一个可由 Python 读取的文件夹树。目前,我正在使用 Mega 的 API 提供的 JSON 响应,但由于某种原因,我在解析它时遇到了麻烦。
我在 App Engine 中使用 Alchemy API,因此我使用 simplejson 库来解析响应。问题是响应中的条目具有 sme 名称 { "status": "OK",
我有一个非常简单的 json,我无法使用 simplejson 模块进行解析。复制: import simplejson as json json.loads(r'{"translatedatt1":
我想这一定有一个简单的答案,但我很挣扎:我想获取一个 url(输出 json)并在 python 中的可用字典中获取数据。我被困在最后一步了。 >>> import urllib2 >>> impor
我正在尝试使用 simplejson.dumps 将 Python 数组编码为 json: In [30]: s1 = ['test', ''] In [31]: simplejson.dumps(s
我正在尝试使用 simplejson 来解析 JSON 字符串。由于某种原因,当我使用 simplejson.loads 时,我收到以下错误: ERROR:root:Exception in requ
当我尝试编译时,出现以下错误: ImportError: No module named simplejson 所以我尝试了: pip install simplejson 我得到: Requirem
为什么 Django 给我这个异常 [(7, u'Acura'), (18, u'Alfa Romeo'), ...] is not JSON serializable 当我尝试 data = Veh
我已将 json 数据加载到 api_result 变量中。现在我需要提取特定字段(name、surname、city 等)。我应该如何验证它们是否存在? api_result = json.load
我想提取 JSONArray 对象的所有注释,我发现了这篇文章 https://www.mkyong.com/java/json-simple-example-read-and-write-json/
Input : {"id": null, "type": null, "order_for": null, "name": "Name"} 代码: input_map = simplejson.dum
我是一名优秀的程序员,十分优秀!