Python simplejson.scanner.JSONDecodeError:无效\X转义序列u';s';:第1行第468列(字符467)

Python simplejson.scanner.JSONDecodeError:无效\X转义序列u';s';:第1行第468列(字符467),python,json,rest,python-requests,imdb,Python,Json,Rest,Python Requests,Imdb,我在向RESTAPI发出HTTP请求时遇到问题,因为我的JSON格式的响应格式不正确。JSON中有正确解释的转义序列,但是有一个特定的句子有“inner\spirital”字样,使得JSON解码器相信“\s”是转义序列,而实际上并非如此 通过搜索stackoverflow文章,我找不到一个适合我的精确用例的解决方案,但我找到了一个很好的方法,使用异常和索引JSON字符串并进行简单的替换。我认为它值得分享,因为它可能会帮助处于类似情况的人。快乐黑客:) 完整代码: import requests

我在向RESTAPI发出HTTP请求时遇到问题,因为我的JSON格式的响应格式不正确。JSON中有正确解释的转义序列,但是有一个特定的句子有“inner\spirital”字样,使得JSON解码器相信“\s”是转义序列,而实际上并非如此

通过搜索stackoverflow文章,我找不到一个适合我的精确用例的解决方案,但我找到了一个很好的方法,使用异常和索引JSON字符串并进行简单的替换。我认为它值得分享,因为它可能会帮助处于类似情况的人。快乐黑客:)

完整代码:

import requests
import os
import json

base_url = 'http://www.omdbapi.com/'
tv_series = {}
films = {}

#for i in range(1, 9999999):
#imdb_id = 'tt' + str(i).zfill(7)
imdb_id = 'tt0120690'
print imdb_id



payload = {
            'i':imdb_id,
            'plot':'full',
            'r':'json'      
}
response = requests.get(base_url, params=payload)
if response.status_code == 200:     
    result = None
    result = response.json()

    if result != None:
        if result['Response'] != 'False':
            if result['Type'] == 'movie':
                films[result['Title']] = result
            elif result['Type'] == 'series':
                tv_series[result['Title']] = result
            else:
                print '[ERROR] Type:', result['Type']
with open('tv_series.json', 'w') as tv_series_outfile:
    json.dump(tv_series, tv_series_outfile)

with open('films.json', 'w') as films_outfile:
    json.dump(films, films_outfile)
Traceback (most recent call last):
  File "import_imdb.py", line 41, in <module>
    result = response.json()
  File "C:\Python27\lib\site-packages\requests\models.py", line 797, in json
    return json.loads(self.text, **kwargs)
  File "C:\Python27\lib\site-packages\simplejson\__init__.py", line 516, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 370, in decode
    obj, end = self.raw_decode(s)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 400, in raw_decode
    return self.scan_once(s, idx=_w(s, idx).end())
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 127, in scan_once
    return _scan_once(string, idx)
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 93, in _scan_once
    _scan_once, object_hook, object_pairs_hook, memo)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 194, in JSONObject
    value, end = scan_once(s, end)
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 90, in _scan_once
    return parse_string(string, idx + 1, encoding, strict)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 99, in py_scanstring
    raise JSONDecodeError(msg, s, end)
simplejson.scanner.JSONDecodeError: Invalid \X escape sequence u's': line 1 column 468 (char 467)
def fix_JSON(json_message=None):
    result = None
    try:        
        result = json.loads(json_message)
    except Exception as e:      
        # Find the offending character index:
        idx_to_replace = int(e.message.split(' ')[-1].replace(')',''))      
        # Remove the offending character:
        json_message = list(json_message)
        json_message[idx_to_replace] = ' '
        new_message = ''.join(json_message)     
        return fix_JSON(json_message=new_message)
    return result
import requests
import os
import json


def fix_JSON(json_message=None):
    result = None
    try:        
        result = json.loads(json_message)
    except Exception as e:      
        # Find the offending character index:
        idx_to_replace = int(e.message.split(' ')[-1].replace(')',''))      
        # Remove the offending character:
        json_message = list(json_message)
        json_message[idx_to_replace] = ' '
        new_message = ''.join(json_message)     
        return fix_JSON(json_message=new_message)
    return result


base_url = 'http://www.omdbapi.com/'
tv_series = {}
films = {}
for i in range(1, 9999999):
    imdb_id = 'tt' + str(i).zfill(7)
    #imdb_id = 'tt0120690'
    print imdb_id



    payload = {
                'i':imdb_id,
                'plot':'full',
                'r':'json'      
    }
    response = requests.get(base_url, params=payload)
    if response.status_code == 200:     
        result = None
        result = fix_JSON(json_message=response.content)

        if result != None:
            if result['Response'] != 'False':
                if result['Type'] == 'movie':
                    films[result['Title']] = result
                elif result['Type'] == 'series':
                    tv_series[result['Title']] = result
                else:
                    print '[ERROR] Type:', result['Type']
with open('tv_series.json', 'w') as tv_series_outfile:
    json.dump(tv_series, tv_series_outfile)

with open('films.json', 'w') as films_outfile:
    json.dump(films, films_outfile)
错误:

import requests
import os
import json

base_url = 'http://www.omdbapi.com/'
tv_series = {}
films = {}

#for i in range(1, 9999999):
#imdb_id = 'tt' + str(i).zfill(7)
imdb_id = 'tt0120690'
print imdb_id



payload = {
            'i':imdb_id,
            'plot':'full',
            'r':'json'      
}
response = requests.get(base_url, params=payload)
if response.status_code == 200:     
    result = None
    result = response.json()

    if result != None:
        if result['Response'] != 'False':
            if result['Type'] == 'movie':
                films[result['Title']] = result
            elif result['Type'] == 'series':
                tv_series[result['Title']] = result
            else:
                print '[ERROR] Type:', result['Type']
with open('tv_series.json', 'w') as tv_series_outfile:
    json.dump(tv_series, tv_series_outfile)

with open('films.json', 'w') as films_outfile:
    json.dump(films, films_outfile)
Traceback (most recent call last):
  File "import_imdb.py", line 41, in <module>
    result = response.json()
  File "C:\Python27\lib\site-packages\requests\models.py", line 797, in json
    return json.loads(self.text, **kwargs)
  File "C:\Python27\lib\site-packages\simplejson\__init__.py", line 516, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 370, in decode
    obj, end = self.raw_decode(s)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 400, in raw_decode
    return self.scan_once(s, idx=_w(s, idx).end())
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 127, in scan_once
    return _scan_once(string, idx)
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 93, in _scan_once
    _scan_once, object_hook, object_pairs_hook, memo)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 194, in JSONObject
    value, end = scan_once(s, end)
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 90, in _scan_once
    return parse_string(string, idx + 1, encoding, strict)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 99, in py_scanstring
    raise JSONDecodeError(msg, s, end)
simplejson.scanner.JSONDecodeError: Invalid \X escape sequence u's': line 1 column 468 (char 467)
def fix_JSON(json_message=None):
    result = None
    try:        
        result = json.loads(json_message)
    except Exception as e:      
        # Find the offending character index:
        idx_to_replace = int(e.message.split(' ')[-1].replace(')',''))      
        # Remove the offending character:
        json_message = list(json_message)
        json_message[idx_to_replace] = ' '
        new_message = ''.join(json_message)     
        return fix_JSON(json_message=new_message)
    return result
import requests
import os
import json


def fix_JSON(json_message=None):
    result = None
    try:        
        result = json.loads(json_message)
    except Exception as e:      
        # Find the offending character index:
        idx_to_replace = int(e.message.split(' ')[-1].replace(')',''))      
        # Remove the offending character:
        json_message = list(json_message)
        json_message[idx_to_replace] = ' '
        new_message = ''.join(json_message)     
        return fix_JSON(json_message=new_message)
    return result


base_url = 'http://www.omdbapi.com/'
tv_series = {}
films = {}
for i in range(1, 9999999):
    imdb_id = 'tt' + str(i).zfill(7)
    #imdb_id = 'tt0120690'
    print imdb_id



    payload = {
                'i':imdb_id,
                'plot':'full',
                'r':'json'      
    }
    response = requests.get(base_url, params=payload)
    if response.status_code == 200:     
        result = None
        result = fix_JSON(json_message=response.content)

        if result != None:
            if result['Response'] != 'False':
                if result['Type'] == 'movie':
                    films[result['Title']] = result
                elif result['Type'] == 'series':
                    tv_series[result['Title']] = result
                else:
                    print '[ERROR] Type:', result['Type']
with open('tv_series.json', 'w') as tv_series_outfile:
    json.dump(tv_series, tv_series_outfile)

with open('films.json', 'w') as films_outfile:
    json.dump(films, films_outfile)
回溯(最近一次呼叫最后一次):
文件“import_imdb.py”,第41行,在
result=response.json()
json格式的文件“C:\Python27\lib\site packages\requests\models.py”,第797行
返回json.load(self.text,**kwargs)
文件“C:\Python27\lib\site packages\simplejson\\uuuuu init\uuuuuu.py”,第516行,装入
返回\u默认\u解码器。解码
文件“C:\Python27\lib\site packages\simplejson\decoder.py”,第370行,在decode中
obj,end=self.raw_解码
文件“C:\Python27\lib\site packages\simplejson\decoder.py”,第400行,原始解码
返回self.scan_一次(s,idx=_w(s,idx.end())
文件“C:\Python27\lib\site packages\simplejson\scanner.py”,第127行,扫描一次
返回扫描一次(字符串,idx)
文件“C:\Python27\lib\site packages\simplejson\scanner.py”,第93行,扫描一次
_扫描一次,对象挂钩,对象配对挂钩,备忘录)
JSONObject中的文件“C:\Python27\lib\site packages\simplejson\decoder.py”,第194行
值,结束=扫描一次(s,结束)
文件“C:\Python27\lib\site packages\simplejson\scanner.py”,第90行,扫描一次
返回parse_字符串(字符串,idx+1,编码,严格)
文件“C:\Python27\lib\site packages\simplejson\decoder.py”,第99行,py\u扫描字符串
raise JSONDecodeError(消息,s,结束)
simplejson.scanner.JSONDecodeError:无效\X转义序列u':第1行第468列(字符467)

我的补丁:

import requests
import os
import json

base_url = 'http://www.omdbapi.com/'
tv_series = {}
films = {}

#for i in range(1, 9999999):
#imdb_id = 'tt' + str(i).zfill(7)
imdb_id = 'tt0120690'
print imdb_id



payload = {
            'i':imdb_id,
            'plot':'full',
            'r':'json'      
}
response = requests.get(base_url, params=payload)
if response.status_code == 200:     
    result = None
    result = response.json()

    if result != None:
        if result['Response'] != 'False':
            if result['Type'] == 'movie':
                films[result['Title']] = result
            elif result['Type'] == 'series':
                tv_series[result['Title']] = result
            else:
                print '[ERROR] Type:', result['Type']
with open('tv_series.json', 'w') as tv_series_outfile:
    json.dump(tv_series, tv_series_outfile)

with open('films.json', 'w') as films_outfile:
    json.dump(films, films_outfile)
Traceback (most recent call last):
  File "import_imdb.py", line 41, in <module>
    result = response.json()
  File "C:\Python27\lib\site-packages\requests\models.py", line 797, in json
    return json.loads(self.text, **kwargs)
  File "C:\Python27\lib\site-packages\simplejson\__init__.py", line 516, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 370, in decode
    obj, end = self.raw_decode(s)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 400, in raw_decode
    return self.scan_once(s, idx=_w(s, idx).end())
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 127, in scan_once
    return _scan_once(string, idx)
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 93, in _scan_once
    _scan_once, object_hook, object_pairs_hook, memo)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 194, in JSONObject
    value, end = scan_once(s, end)
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 90, in _scan_once
    return parse_string(string, idx + 1, encoding, strict)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 99, in py_scanstring
    raise JSONDecodeError(msg, s, end)
simplejson.scanner.JSONDecodeError: Invalid \X escape sequence u's': line 1 column 468 (char 467)
def fix_JSON(json_message=None):
    result = None
    try:        
        result = json.loads(json_message)
    except Exception as e:      
        # Find the offending character index:
        idx_to_replace = int(e.message.split(' ')[-1].replace(')',''))      
        # Remove the offending character:
        json_message = list(json_message)
        json_message[idx_to_replace] = ' '
        new_message = ''.join(json_message)     
        return fix_JSON(json_message=new_message)
    return result
import requests
import os
import json


def fix_JSON(json_message=None):
    result = None
    try:        
        result = json.loads(json_message)
    except Exception as e:      
        # Find the offending character index:
        idx_to_replace = int(e.message.split(' ')[-1].replace(')',''))      
        # Remove the offending character:
        json_message = list(json_message)
        json_message[idx_to_replace] = ' '
        new_message = ''.join(json_message)     
        return fix_JSON(json_message=new_message)
    return result


base_url = 'http://www.omdbapi.com/'
tv_series = {}
films = {}
for i in range(1, 9999999):
    imdb_id = 'tt' + str(i).zfill(7)
    #imdb_id = 'tt0120690'
    print imdb_id



    payload = {
                'i':imdb_id,
                'plot':'full',
                'r':'json'      
    }
    response = requests.get(base_url, params=payload)
    if response.status_code == 200:     
        result = None
        result = fix_JSON(json_message=response.content)

        if result != None:
            if result['Response'] != 'False':
                if result['Type'] == 'movie':
                    films[result['Title']] = result
                elif result['Type'] == 'series':
                    tv_series[result['Title']] = result
                else:
                    print '[ERROR] Type:', result['Type']
with open('tv_series.json', 'w') as tv_series_outfile:
    json.dump(tv_series, tv_series_outfile)

with open('films.json', 'w') as films_outfile:
    json.dump(films, films_outfile)
完整代码:

import requests
import os
import json

base_url = 'http://www.omdbapi.com/'
tv_series = {}
films = {}

#for i in range(1, 9999999):
#imdb_id = 'tt' + str(i).zfill(7)
imdb_id = 'tt0120690'
print imdb_id



payload = {
            'i':imdb_id,
            'plot':'full',
            'r':'json'      
}
response = requests.get(base_url, params=payload)
if response.status_code == 200:     
    result = None
    result = response.json()

    if result != None:
        if result['Response'] != 'False':
            if result['Type'] == 'movie':
                films[result['Title']] = result
            elif result['Type'] == 'series':
                tv_series[result['Title']] = result
            else:
                print '[ERROR] Type:', result['Type']
with open('tv_series.json', 'w') as tv_series_outfile:
    json.dump(tv_series, tv_series_outfile)

with open('films.json', 'w') as films_outfile:
    json.dump(films, films_outfile)
Traceback (most recent call last):
  File "import_imdb.py", line 41, in <module>
    result = response.json()
  File "C:\Python27\lib\site-packages\requests\models.py", line 797, in json
    return json.loads(self.text, **kwargs)
  File "C:\Python27\lib\site-packages\simplejson\__init__.py", line 516, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 370, in decode
    obj, end = self.raw_decode(s)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 400, in raw_decode
    return self.scan_once(s, idx=_w(s, idx).end())
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 127, in scan_once
    return _scan_once(string, idx)
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 93, in _scan_once
    _scan_once, object_hook, object_pairs_hook, memo)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 194, in JSONObject
    value, end = scan_once(s, end)
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 90, in _scan_once
    return parse_string(string, idx + 1, encoding, strict)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 99, in py_scanstring
    raise JSONDecodeError(msg, s, end)
simplejson.scanner.JSONDecodeError: Invalid \X escape sequence u's': line 1 column 468 (char 467)
def fix_JSON(json_message=None):
    result = None
    try:        
        result = json.loads(json_message)
    except Exception as e:      
        # Find the offending character index:
        idx_to_replace = int(e.message.split(' ')[-1].replace(')',''))      
        # Remove the offending character:
        json_message = list(json_message)
        json_message[idx_to_replace] = ' '
        new_message = ''.join(json_message)     
        return fix_JSON(json_message=new_message)
    return result
import requests
import os
import json


def fix_JSON(json_message=None):
    result = None
    try:        
        result = json.loads(json_message)
    except Exception as e:      
        # Find the offending character index:
        idx_to_replace = int(e.message.split(' ')[-1].replace(')',''))      
        # Remove the offending character:
        json_message = list(json_message)
        json_message[idx_to_replace] = ' '
        new_message = ''.join(json_message)     
        return fix_JSON(json_message=new_message)
    return result


base_url = 'http://www.omdbapi.com/'
tv_series = {}
films = {}
for i in range(1, 9999999):
    imdb_id = 'tt' + str(i).zfill(7)
    #imdb_id = 'tt0120690'
    print imdb_id



    payload = {
                'i':imdb_id,
                'plot':'full',
                'r':'json'      
    }
    response = requests.get(base_url, params=payload)
    if response.status_code == 200:     
        result = None
        result = fix_JSON(json_message=response.content)

        if result != None:
            if result['Response'] != 'False':
                if result['Type'] == 'movie':
                    films[result['Title']] = result
                elif result['Type'] == 'series':
                    tv_series[result['Title']] = result
                else:
                    print '[ERROR] Type:', result['Type']
with open('tv_series.json', 'w') as tv_series_outfile:
    json.dump(tv_series, tv_series_outfile)

with open('films.json', 'w') as films_outfile:
    json.dump(films, films_outfile)

我的修复:

import requests
import os
import json

base_url = 'http://www.omdbapi.com/'
tv_series = {}
films = {}

#for i in range(1, 9999999):
#imdb_id = 'tt' + str(i).zfill(7)
imdb_id = 'tt0120690'
print imdb_id



payload = {
            'i':imdb_id,
            'plot':'full',
            'r':'json'      
}
response = requests.get(base_url, params=payload)
if response.status_code == 200:     
    result = None
    result = response.json()

    if result != None:
        if result['Response'] != 'False':
            if result['Type'] == 'movie':
                films[result['Title']] = result
            elif result['Type'] == 'series':
                tv_series[result['Title']] = result
            else:
                print '[ERROR] Type:', result['Type']
with open('tv_series.json', 'w') as tv_series_outfile:
    json.dump(tv_series, tv_series_outfile)

with open('films.json', 'w') as films_outfile:
    json.dump(films, films_outfile)
Traceback (most recent call last):
  File "import_imdb.py", line 41, in <module>
    result = response.json()
  File "C:\Python27\lib\site-packages\requests\models.py", line 797, in json
    return json.loads(self.text, **kwargs)
  File "C:\Python27\lib\site-packages\simplejson\__init__.py", line 516, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 370, in decode
    obj, end = self.raw_decode(s)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 400, in raw_decode
    return self.scan_once(s, idx=_w(s, idx).end())
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 127, in scan_once
    return _scan_once(string, idx)
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 93, in _scan_once
    _scan_once, object_hook, object_pairs_hook, memo)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 194, in JSONObject
    value, end = scan_once(s, end)
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 90, in _scan_once
    return parse_string(string, idx + 1, encoding, strict)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 99, in py_scanstring
    raise JSONDecodeError(msg, s, end)
simplejson.scanner.JSONDecodeError: Invalid \X escape sequence u's': line 1 column 468 (char 467)
def fix_JSON(json_message=None):
    result = None
    try:        
        result = json.loads(json_message)
    except Exception as e:      
        # Find the offending character index:
        idx_to_replace = int(e.message.split(' ')[-1].replace(')',''))      
        # Remove the offending character:
        json_message = list(json_message)
        json_message[idx_to_replace] = ' '
        new_message = ''.join(json_message)     
        return fix_JSON(json_message=new_message)
    return result
import requests
import os
import json


def fix_JSON(json_message=None):
    result = None
    try:        
        result = json.loads(json_message)
    except Exception as e:      
        # Find the offending character index:
        idx_to_replace = int(e.message.split(' ')[-1].replace(')',''))      
        # Remove the offending character:
        json_message = list(json_message)
        json_message[idx_to_replace] = ' '
        new_message = ''.join(json_message)     
        return fix_JSON(json_message=new_message)
    return result


base_url = 'http://www.omdbapi.com/'
tv_series = {}
films = {}
for i in range(1, 9999999):
    imdb_id = 'tt' + str(i).zfill(7)
    #imdb_id = 'tt0120690'
    print imdb_id



    payload = {
                'i':imdb_id,
                'plot':'full',
                'r':'json'      
    }
    response = requests.get(base_url, params=payload)
    if response.status_code == 200:     
        result = None
        result = fix_JSON(json_message=response.content)

        if result != None:
            if result['Response'] != 'False':
                if result['Type'] == 'movie':
                    films[result['Title']] = result
                elif result['Type'] == 'series':
                    tv_series[result['Title']] = result
                else:
                    print '[ERROR] Type:', result['Type']
with open('tv_series.json', 'w') as tv_series_outfile:
    json.dump(tv_series, tv_series_outfile)

with open('films.json', 'w') as films_outfile:
    json.dump(films, films_outfile)
完整代码:

import requests
import os
import json

base_url = 'http://www.omdbapi.com/'
tv_series = {}
films = {}

#for i in range(1, 9999999):
#imdb_id = 'tt' + str(i).zfill(7)
imdb_id = 'tt0120690'
print imdb_id



payload = {
            'i':imdb_id,
            'plot':'full',
            'r':'json'      
}
response = requests.get(base_url, params=payload)
if response.status_code == 200:     
    result = None
    result = response.json()

    if result != None:
        if result['Response'] != 'False':
            if result['Type'] == 'movie':
                films[result['Title']] = result
            elif result['Type'] == 'series':
                tv_series[result['Title']] = result
            else:
                print '[ERROR] Type:', result['Type']
with open('tv_series.json', 'w') as tv_series_outfile:
    json.dump(tv_series, tv_series_outfile)

with open('films.json', 'w') as films_outfile:
    json.dump(films, films_outfile)
Traceback (most recent call last):
  File "import_imdb.py", line 41, in <module>
    result = response.json()
  File "C:\Python27\lib\site-packages\requests\models.py", line 797, in json
    return json.loads(self.text, **kwargs)
  File "C:\Python27\lib\site-packages\simplejson\__init__.py", line 516, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 370, in decode
    obj, end = self.raw_decode(s)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 400, in raw_decode
    return self.scan_once(s, idx=_w(s, idx).end())
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 127, in scan_once
    return _scan_once(string, idx)
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 93, in _scan_once
    _scan_once, object_hook, object_pairs_hook, memo)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 194, in JSONObject
    value, end = scan_once(s, end)
  File "C:\Python27\lib\site-packages\simplejson\scanner.py", line 90, in _scan_once
    return parse_string(string, idx + 1, encoding, strict)
  File "C:\Python27\lib\site-packages\simplejson\decoder.py", line 99, in py_scanstring
    raise JSONDecodeError(msg, s, end)
simplejson.scanner.JSONDecodeError: Invalid \X escape sequence u's': line 1 column 468 (char 467)
def fix_JSON(json_message=None):
    result = None
    try:        
        result = json.loads(json_message)
    except Exception as e:      
        # Find the offending character index:
        idx_to_replace = int(e.message.split(' ')[-1].replace(')',''))      
        # Remove the offending character:
        json_message = list(json_message)
        json_message[idx_to_replace] = ' '
        new_message = ''.join(json_message)     
        return fix_JSON(json_message=new_message)
    return result
import requests
import os
import json


def fix_JSON(json_message=None):
    result = None
    try:        
        result = json.loads(json_message)
    except Exception as e:      
        # Find the offending character index:
        idx_to_replace = int(e.message.split(' ')[-1].replace(')',''))      
        # Remove the offending character:
        json_message = list(json_message)
        json_message[idx_to_replace] = ' '
        new_message = ''.join(json_message)     
        return fix_JSON(json_message=new_message)
    return result


base_url = 'http://www.omdbapi.com/'
tv_series = {}
films = {}
for i in range(1, 9999999):
    imdb_id = 'tt' + str(i).zfill(7)
    #imdb_id = 'tt0120690'
    print imdb_id



    payload = {
                'i':imdb_id,
                'plot':'full',
                'r':'json'      
    }
    response = requests.get(base_url, params=payload)
    if response.status_code == 200:     
        result = None
        result = fix_JSON(json_message=response.content)

        if result != None:
            if result['Response'] != 'False':
                if result['Type'] == 'movie':
                    films[result['Title']] = result
                elif result['Type'] == 'series':
                    tv_series[result['Title']] = result
                else:
                    print '[ERROR] Type:', result['Type']
with open('tv_series.json', 'w') as tv_series_outfile:
    json.dump(tv_series, tv_series_outfile)

with open('films.json', 'w') as films_outfile:
    json.dump(films, films_outfile)

response.content.replace(“\s”,“s”)
将修复您的示例,但Api已损坏,您可能需要提交错误报告这是正确的,但不是通用解决方案。它并不总是
\s
。这就是为什么我编写了一个通用解决方案来检查问题字符所在的位置。
response.content.replace(“\s”,“s”)
将修复您的示例,但Api已损坏,您可能需要提交错误报告这是正确的,但不是通用解决方案。它并不总是
\s
。这就是为什么我写了一个通用的解决方案来检查问题的性质所在。