pandas 读取 Excel 参数文件,提交接口报错,打印出来的 dict 复制出来提交却正常

2022-11-11 12:36:54 +08:00
 873792861
如题。接口的参数都存在一个 Excel 里。利用 pandas 读取出来后,转为 record 形式的 dict 。然后用 request 提交,但是报请求接口参数不正确,模板渲染失败。但是把这个 dict 打印出来后,复制到另一个 py ,用同样的方法转为 JSON 后提交成功。这是为什么呢?核心的代码如下:

import requests
import json
import pandas as pd
from datetime import datetime


tk=Token(get_hlht_token())
tb=pd.read_excel('D:\\log\\查询结果.xlsx')
tb=tb.fillna('')
tb=tb.astype({'sid':str,'ztlb':str,'jclb':str,'sjje':str})

lists=tb.to_dict('records')
temp_dict=lists[6]
fk_url='http://xxx?access_token={}'.format(tk.token)
header = { 'Content-Type': 'application/json'}
temp_dict['token']=get_lhzc_token()
jsons=json.dumps(temp_dict)
r=requests.post(url=fk_url,data=jsons,headers=header)
print(r.text)


把 temp_dict 打印出来,复制到另一个 py 文件,用同样的方式就能提交成功,这是为啥呢?一开始百度以为是 utf-8 编码的问题,但是加上.encode('ut8')也不行。麻烦大家指点下迷津
1745 次点击
所在节点    Python
4 条回复
renmu
2022-11-11 12:42:17 +08:00
抓包看请求
liprais
2022-11-11 12:42:20 +08:00
你不看看提交的请求是啥
lookStupiToForce
2022-11-11 15:10:59 +08:00
原因盲猜有不可见且不可打印字符
测试方法:
把 temp_dict 用 print(repr(temp_dict))打印一遍,对比你复制后的 py 文件里的 print(repr(new_dict)),看有没有啥多出来的东西
873792861
2022-11-12 15:50:39 +08:00
@lookStupiToForce 把代码复制到正常的 py 里就都正常提交了。btw ,我用的是 jupyter ,不知道为什么两个 notebook 会出现这种奇怪的情况

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/894439

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX