#python
Вопрос:
Я выполняю вызов api и выводю ответ в виде одной строки в файл .txt.
Текущий вывод в txt-файле содержит тонны дополнительных / символов, которые мне нужно удалить .Я попытался выполнить итерацию по файлу и.заменить() символы, но безуспешно.
Текущая строка файла выглядит так —
"{"name":"Win Technologies","plan":"enterprise","period":
Мой код выглядит так —
def call_api(headers, token):
url = 'https://api.wonderproxy.com/v0/contract'
response = requests.get(url, headers=headers, auth=HTTPBasicAuth(token, ''), verify=False)
res = requests.get(f'{url}/servers', headers=headers, auth=HTTPBasicAuth(token, ''), verify=False)
if response.status_code | res.status_code != 200:
final_res = 'Failed to Make API Call'
else:
contract_response = response.text
servers_response = res.text
final_res = contract_response servers_response
file_name = f'./wonderproxy{date.today()}.txt'
with open(file_name, 'a') as outlog:
if os.path.getsize(file_name)> 0:
outlog.write("n")
json.dump(final_res, outlog)
else:
json.dump(final_res, outlog)
Как я уже сказал, я пробовал перебирать строки и делать .replace() в поисках нового подхода, спасибо.
Комментарии:
1. Вы пробовали использовать re.sub ? text_after = re.sub(regex_search_term, регулярное выражение, замена, text_before)
2. Я предполагаю, что API предоставляет вам допустимую строку JSON. Вы должны загрузить это в диктант с помощью
json.loads
, извлечь необходимую информацию из диктанта, а затем сохранить ее в файле в нужном вам формате.3. Вы подтвердили, что именно так на самом деле выглядит ответ? Похоже, что вы взяли допустимую строку Python и использовали
repr
ее, что бы учесть все дополнительные символы.
Ответ №1:
Проблема в том, что вы неправильно обрабатываете ответ API. contract_response
и servers_response
будут отдельными строками JSON. Вы должны загрузить их в отдельные словари (или как там выглядят данные).,
contract_data = json.loads(contract_response)
servers_data = json.loads(servers_response)
Затем вы можете json.dump
разделить их на отдельные файлы или объединить в список, или что-то еще. То, как вы это делаете, данные обрабатываются json.dump
как строка, поэтому все символы экранируются.