Перебирайте строки и заменяйте символы — python

#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 как строка, поэтому все символы экранируются.