首页 > 解决方案 > 迭代行并替换字符 - python

问题描述

我正在进行 api 调用并将响应作为单行输出到 .txt 文件中。

txt 文件中的当前输出中有大量额外的 / 字符,我需要删除它们我试图遍历文件和 .replace() 字符但没有成功。

当前文件行看起来像 -

"{\"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() 寻找新的方法,谢谢。

标签: python

解决方案


问题是您没有正确处理 API 响应。 contract_response并且servers_response将是单独的 JSON 字符串。您应该将它们加载到单独的字典中(或任何数据的样子),

contract_data = json.loads(contract_response)
servers_data = json.loads(servers_response)

然后,您可以json.dump将它们放入单独的文件中,或者将它们组合成一个列表或其他什么。您执行此操作的方式将数据视为json.dumpstring 这就是所有字符都被转义的原因。


推荐阅读