python - json.loads 不替换撇号

标签 python json

我有一个 json 对象,我正在加载它并像我一样用双引号替换单引号。语法是:

response = json.loads(response.text.replace("'", '"'))

在我的数据中,我有采用以下格式的键/值对:

"name":"John O'Shea"

这导致我得到以下回溯:

Traceback (most recent call last):
  File "C:\Python27\Whoscored\Test.py", line 204, in <module>
    response = json.loads(response.text.replace("'", '"').replace(',,', ','))
  File "C:\Python27\lib\json\__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\json\decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Python27\lib\json\decoder.py", line 382, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting ',' delimiter: line 1 column 7751 (char 7750)

我实际上并不想替换上述名称中的撇号,但我认为我的 json.loads 语句会将我的键/值对转换为:

"name":"John O"Shea"

我假设这也会失败。我需要知道的是:

1) 为什么我的 json.loads 语句在加载期间没有替换字符串中的撇号? 2) 在我的字符串中转义撇号的最佳方法是什么,这样它们就不会导致错误,但仍会显示在负载中?

我在较大的 to 字符串上使用了一个 json 测试器来确认没有其他错误会阻止对象正常工作,但事实并非如此。

谢谢

最佳答案

Json 使用 " 作为格式化字符,所以 response.text.replace("'", '"') 只是破坏了文件。 Json 将字符串中的引号转义为 \" 所以这应该有效:

response = json.loads(response.text.replace("'", '\\"'))

关于python - json.loads 不替换撇号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29287206/

相关文章:

使用carrierwave gem尝试在rails中上传多个图像时出现Mysql语法错误

python - 使用python将mysql数据从一个表插入到另一个表

python - 一个中小型项目的Flask框架

asp.net - JsonResult 相当于 [DataMember(Name ="Test")]

javascript - getJSON 适用于 Android 但不适用于 IOS

javascript - ReactJS 不使用 && 显示数据

python - 在遍历python列表的同时修改元素时,这种行为背后的原因是什么?

python - 什么是 unicode 字符串?

python - 根据 lambda 排序字典 : handling exceptions

json - 需要jmespath查询输出过滤表达式的id属性