Python使用中错误(持续更新.....)

1、在使用requests发送请求,响应数据转成json提示,没有可解码的json

解决办法:

这是由于,发送请求的数据,存在错误,响应出错比如404 400,所以找不到可以解码的json

示例如下:

postdata = ‘‘‘{‘userName‘:‘13718651996‘,
            ‘passwd‘:‘yhlxxxx870120‘,
            ‘validateCode‘:‘abc‘,
            ‘rememberMe‘:‘true‘}‘‘‘
url = ‘https://secure.elong.com/passport/ajax/elongLogin‘
response = Session().post(url,data=postdata)
print(response.json())

其实从图上很明显能看出问题,因为postdata是字符串类型,不是dict字典

如上图代码如果执行报如下错误:

解决办法,eval()函数将字符串,转换成字典;如下所示

postdata = ‘‘‘{‘userName‘:‘13718651996‘,
            ‘passwd‘:‘yhlxxxx870120‘,
            ‘validateCode‘:‘abc‘,
            ‘rememberMe‘:‘true‘}‘‘‘
url = ‘https://secure.elong.com/passport/ajax/elongLogin‘
request = Session().post(url,data=eval(postdata))
print(request.json())

有人可能会说,你这不是多此一举吗?把postdata直接定义成字典不就行了;你说的没错确实可以这样

postdata = {‘userName‘:‘13718651996‘,
            ‘passwd‘:‘yhlxxxx870120‘,
            ‘validateCode‘:‘abc‘,
            ‘rememberMe‘:‘true‘}
url = ‘https://secure.elong.com/passport/ajax/elongLogin‘
request = Session().post(url,data=postdata)
print(request.json())

但是如果以下这串数据,存储在数据库中,或者excel中,读出来的时候默认就是字符串,如果读出来直接使用就会出现本文的错误,

所以哪里错了这个要知道,这是一个小细节;调试输出,发现输出跟以下是一样的,

没有错呀这是字典呢{‘xxxx‘:‘xxx‘..........},但是它就是字符串。容易被忽略,所以还要使用eval(postdata)函数转成字典

{‘userName‘:‘13718651996‘,
            ‘passwd‘:‘yhlxxxx870120‘,
            ‘validateCode‘:‘abc‘,
            ‘rememberMe‘:‘true‘}

正确代码:

postdata = ‘‘‘{‘userName‘:‘13718651996‘,
            ‘passwd‘:‘yhlxxxx870120‘,
            ‘validateCode‘:‘abc‘,
            ‘rememberMe‘:‘true‘}‘‘‘
url = ‘https://secure.elong.com/passport/ajax/elongLogin‘
request = Session().post(url,data=eval(postdata))
print(request.json())

------------------------------我是华丽的分隔线----------------------------------

2、

时间: 2024-10-11 00:10:46

Python使用中错误(持续更新.....)的相关文章

python tips(持续更新)

1. 引用上一层目录 import syssys.path.append('..')import xx 2. python json JSON是一种轻量级的数据交换格式.可以解决数据库中文存储问题,对象序列化问题,等等. import json encodedjson = json.dumps(obj) decodejson = json.loads(encodedjson) 非常简单. 3. 静态方法 在函数前面@staticmethod @staticmethod def func(): p

Python拾遗(持续更新中)

虽然曾经使用Python做过几个小网站的后台,但未能触及Python的方方面面.本次参加51cto网的老男孩Python运维课程,来查漏补缺. 本篇博文将会持续更新,不断加入本人遗漏的Python知识点. 4月5日-4月11日: 在Linux下,使用 #!/usr/bin/python3 或者 #!/usr/bin/env python3 来指定改Python程序运行时使用的python版本 使用 type(变量名) 查询变量类型.存在 type(a) == str 这种用法. 使用 id(变量

从代码中学Python语法(持续更新)

# -*- coding:utf-8 -*- __author__ = 'hunterhug' print("你好") #打印 hello = "This 'is' \"a rather long string containing\n several lines of text just as you would do in C.\n Note that whitespace at the beginning of the line is\n significan

python 模块知识(持续更新......)

提示:当不会用模块方法的时候用help >>> import re >>>help(re.search) 查看模块的所有方法: >>>import re >>>dir(re) 1.sys 模块 sys.argv包含了命令行参数列表,脚本的名称总是sys.argv列表的第一个参数,也就是sys.argv[0] 2.os 模块 Python 模块包含普遍的操作系统功能. 在Python中运行shell命令 1.os.system('com

Python 学习.. 将持续更新...

2016年,开始学习python的基础知识,然后是 python 自动化运维.从最基础的出发.. 第一个python 脚本..(mysql 备份脚本) #!/usr/bin/python #coding:utf-8 import os import time backup  =   '/opt/jicki/' today   =   backup  +   time.strftime('%Y%m%d') now =   time.strftime('%H%M%S') if  not os.pat

python笔记(持续更新)

1.编译python遇到下面的编码问题: SyntaxError: Non-ASCII character '\xe9' in file E:\projects\learn.py on line 3, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details 解决方法:解决方法:源代码文件第一行添加:#coding:utf-8 2.python快速教程:http://www.cnblogs.com

acm常见错误-持续更新

1.输出字符串错误:这是最不该犯的错误,最好复制题目输出以避免这种低级别错误. 2.cin,cout超时错误:在数据量大的情况下,在循环中使用cin,cout可能会导致超时,一般用scanf,printf替换.在替换中涉及到字符串,需要将string改为char*,目前观察大于10^4尽量用scanf,printf. 3.vector超时错误:使用大量的vector操作,可能会导致超时,能使用数组标记操作,尽量不使用vector操作. 原文地址:https://www.cnblogs.com/A

Python小知识点(持续更新)

1.Python2字符编码 #coding:utf-8 ''' 上面的代码将环境编码设置为utf-8,没有上面的代码,将使用环境默认编码,环境默认编码可由sys.getdefaultencoding()获得 ''' s = '中国' #s是utf-8格式的str,因为上面的代码将环境编码设置为utf-8 u = s.decode('utf-8') #u是unicode对象 s.encode('gbk') #等价于s.decode('utf-8').encode('gbk') ''' 在计算机内存

python基本语法(持续更新)

挖坑 变量 注释 用户输入 数据类型 1. int long float complex 2.布尔值 True   flase 1     0 3.str 4.列表 5.元祖(不可变列表) 6.字典 数据运算 循环语句 原文地址:https://www.cnblogs.com/gsx-600r/p/9734614.html