О .JSONDecodeError, не знаю, в чем причина и как это исправить

#python #pandas

Вопрос:

пытаюсь подключить свой код сравнения цен к pandas , но я получил ошибку:

 JSONDecodeError: Expecting value: line 1 column 1 (char 0)
 

код выглядит так:

 keyword = str(input('找什麼? '))
pages = 10
parse_word = urllib.parse.quote(keyword)
for page in list(range(1, pages)):
    response = requests.get('https://ecshweb.pchome.com.tw/search/v3.3/all/results?q='   parse_word   'amp;page='   str(page)   'amp;sort=rnk/dc')
    raw_data = response.content.decode(encoding='utf-8')
    data = json.loads(raw_data)
    try:
        myData = []
        for product in data['prods']:
            product_name = product['name']
            prod_id = product['Id']
            prod_price = product['price']
            link = 'https://24h.pchome.com.tw/prod/'   prod_id
            myData.append({
                "名稱":product_name,
                "價格":prod_price,
                "網址":link
            })
            today = str(datetime.date.today())
            fileName = today   '_'   keyword   '_Pchome.json'
            try:
                with open(fileName, 'w', encoding='utf-8') as f:
                    json.dump(myData, f, ensure_ascii=False, indent=4, skipkeys=True)        
            except Exception as err:
               print(str(err))
    except Exception as err:
        print(str(err))
print('完成!') 
df = pd.DataFrame(myData)
#print(df)
print('='*150)
print(df.nsmallest(10, '價格'))
print('='*150)
 

а вот сообщения об ошибках:

 Traceback (most recent call last):
  File "C:UsersChengDesktopPythonAutoshoppchome.py", line 24, in <module>
    data = json.loads(raw_data)
  File "C:UsersChengAppDataLocalProgramsPythonPython39libjson__init__.py", line 346, in loads    
    return _default_decoder.decode(s)
  File "C:UsersChengAppDataLocalProgramsPythonPython39libjsondecoder.py", line 337, in decode    
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:UsersChengAppDataLocalProgramsPythonPython39libjsondecoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
 

интересно, как это исправить

Комментарии:

1. Какая строка генерирует ошибку? Так ли это data = json.loads(raw_data) ? Вы смотрели на значение raw_data , прежде чем пытаться расшифровать его как JSON? В нем может содержаться ключ к разгадке проблемы.

2. Пожалуйста, всегда публикуйте полное сообщение об ошибке с полной обратной связью .

Ответ №1:

Вы должны заметить row_data , что, возможно, содержимое в нем не соответствует формату JSON.

Например:

 text = """{"str1": 'str2'}""" 
json.loads(text)
 

и покажет

 JSONDecodeError: Expecting value: line 1 column 10 (char 9)