python - 迭代行并替换字符 - 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() 寻找新的方法,谢谢。
解决方案
问题是您没有正确处理 API 响应。
contract_response
并且servers_response
将是单独的 JSON 字符串。您应该将它们加载到单独的字典中(或任何数据的样子),
contract_data = json.loads(contract_response)
servers_data = json.loads(servers_response)
然后,您可以json.dump
将它们放入单独的文件中,或者将它们组合成一个列表或其他什么。您执行此操作的方式将数据视为json.dump
string ,这就是所有字符都被转义的原因。
推荐阅读
- r - 通常包含内部 is.X(is.vector、is.numeric 等)和所有 isX(isS4、isOpen 等)函数的包是什么?
- modelica - 为 heatPort 开关建模
- cakephp - 了解 Cake PHP 路由
- c# - 存储库仅在某些情况下获取数据
- sql - 数据挑战 - postgres sql - 对时间跟踪事件进行编号
- php - 在 php 中获取 Name 值以及如何使用 post 获取它
- json - 在Angular中以特定格式分离和排列数据?
- javascript - 在 Vue JS 中,从 vue 实例中的方法调用过滤器,但 $options 未定义
- c++ - 如何声明和定义推导类型的静态成员?
- docker - Ping:使用超级账本结构图像时找不到命令