ответ на http-запрос не в формате json

#python #json #http #request #response

#python #json #http #запрос #ответ

Вопрос:

Я потратил много времени, пытаясь исправить это, но все равно безуспешно. буду признателен, если вы сможете помочь.

Это на Python

Когда я запускаю это:

 import requests
import json

response = requests.post(url)
response.text
 

Я понимаю это:

‘n n n n{nVisitCount: «9 992»,ntotalCount: «18 018»,nnotiList: [n n],nPassed: false n}’

Если я запущу это:

 print(response.text)
 

Я понимаю это:

{ visitCount: «9 992», totalCount: «18 018 455», notiList : [

], Передано : false }

В конечном счете я стремлюсь извлечь число 9 992. Я подумал, что самый простой способ — преобразовать это в json, но, похоже, это не работает.

Когда я запускаю:

 response.json() or json.loads(response.text)
 

Я понимаю это:

Ошибка JSONDecodeError: ожидаемое имя свойства, заключенное в двойные кавычки: строка 6 столбец 1 (символ 6)

Вероятно, это связано с тем, что в ответе отсутствуют двойные кавычки.

  1. как я могу исправить эту проблему, возможно, добавив двойные кавычки в ответ?
  2. есть ли более простой способ извлечения числа, которое в данном случае равно 9 992?

Ответ №1:

Вы можете использовать регулярные выражения:

 import re
number_string = re.findall("VisitCountW :W .*?([0-9,] ).*", response.text.strip())[0]
 

выдает number_string как

 9,992
 

Если вы хотите преобразовать его в int :

 number = int(number_string.replace(",", ""))
 

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

1. Если проблема решена, пожалуйста, отметьте ответ как принятый, чтобы закрыть его.