我有一个 json 对象,我正在加载它并用双引号替换单引号。其语法是:
response = json.loads(response.text.replace("'", '"'))
Run Code Online (Sandbox Code Playgroud)
在我的数据中,我有采用以下格式的键/值对:
"name":"John O'Shea"
Run Code Online (Sandbox Code Playgroud)
这导致我得到以下回溯:
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)
Run Code Online (Sandbox Code Playgroud)
我实际上不想替换上面的名称中的撇号,但我认为我的 json.loads 语句会将我的键/值对转换为:
"name":"John O"Shea"
Run Code Online (Sandbox Code Playgroud)
我假设这也会失败。我需要知道的是:
1)为什么我的 json.loads 语句在加载期间没有替换字符串中的撇号?2)转义字符串中的撇号以便它们不会导致错误但仍显示在负载中的最佳方法是什么?
我在较大的字符串上使用了 json 测试器来确认没有其他错误会阻止对象正常工作,但事实并非如此。
谢谢
Json 用作"格式化字符,因此response.text.replace("'", '"')只会损坏文件。Json 转义字符串内的引号,因此\"这应该可以工作:
response = json.loads(response.text.replace("'", '\\"'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7592 次 |
| 最近记录: |