![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Python
Python
小小测试开发工程师
测试开发工程师,移动搜索6年工作经验
展开
-
python之字符串替换的几种方法
1、方法一:字符串替换格式化字符 tmp = "test %s, owner %s" %("20211009", "小二黑") tmp = "test {}, owner {}".format("20211009", "小二黑") 2、方法二:字符串替换命名的格式化字符 tmp = "test %(date)s, owner %(name)s" %{"name":"小二黑", "date":"20211009"} 3、方法三:使用string中的Template方法替换命名的格式化字符原创 2021-10-09 20:11:08 · 5889 阅读 · 0 评论 -
python之一行命令使文件json格式化
背景:一个文件是dict,但是内容未格式化展示,阅读起来非常困难解决:使用python -m json.tool即可解决示例:cat xxx| python -m json.tool具体示例如下:$cat test_json{"a":"b","c":"daakkfff","cdfga":"cvghss"}$cat test_json | python -m json.tool{ "a": "b", "c": "daakkfff", "cdfga": "cvghss"}原创 2021-10-08 19:51:13 · 625 阅读 · 0 评论 -
python之json.loads()报错ValueError: No JSON object could be decoded解决
问题:json.loads(xxx)后报错ValueError: No JSON object could be decoded原因:注意是unicode编码和'单引号问题引起解决:方法一:将xxx先作字符串转化xxx.replace("u", "").replace("'", '"'),然后再json.loads(xxx.replace("u", "").replace("'", '"'))即可方法二:使用Python内置函数eval(expression[, globals[, locas]]解原创 2021-09-10 12:04:11 · 9049 阅读 · 0 评论 -
python之quote报错*** KeyError: u‘\uxx‘解决
问题:urllib.quote(xxx)运行后报错*** KeyError: u'\uxx'原因:看下xxx类型:<type 'unicode'>,而urllib.quote(params)中的params就是字符串,只能猜测该字符串的编码不符合要求,所以对xxx进行编码解决:urllib.quote(xxx.encode("utf-8"))或者urllib.quote(str(xxx))示例如下:import urllib xxx = u'[{"test":"测试"}]'原创 2021-09-04 17:59:19 · 1517 阅读 · 0 评论 -
python之urlencode报错*** TypeError: not a valid non-string sequence or mapping object解决
问题:urllib.urlencode(xxx)运行后报错*** TypeError: not a valid non-string sequence or mapping object解决:既然报错TypeError,看下xxx类型:<type 'list'>,而urllib.urlencode(params)中的params需要为字典对象示例如下:>>> import urllib>>> xxx = [{"a":"b"}]>>>原创 2021-09-04 17:47:01 · 9198 阅读 · 0 评论 -
python之list元素两两组合、多个list元素多种组合,即笛卡尔积
问题:想要一个list中元素的两两组合、多个list元素的各种组合解决:利用`itertools.product(*iterables, repeat=2)`求笛卡尔积即可说明:笛卡尔积是两个集合`x`、`y`的笛卡尔积,表示为:`x`× `y`,结果是:第一个对象是`x`的成员,第二个对象是集合`y`中的任一元素,eg:`x=(x1,x2)`,`y=(y1,y2)`,则`x` × `y`=`[(x1,y1),(x1,y2),(x2,y1),(x2,y2)]`from itertools import原创 2021-08-18 19:47:47 · 20183 阅读 · 3 评论 -
python之dict打印
打印dict:key、value,eg:dict.items()、dict.iteritems()说明:dict.items()和dict.iteritems()区别,dict.items()返回的是一个列表一次性给出所有值dict.iteritems()返回的是一个迭代器需要通过for循环遍历,每次取出一个一般在数据量比较大时,使用`iteritems()`,效率较高打印dict:所有key,dict.keys()打印dict:所有values,dict.values()原创 2021-08-18 16:37:37 · 2235 阅读 · 0 评论 -
python之list排序
方法一:用list的sort()方法排序,eg:list.sort()方法二:用sorted函数的key=参数排序,eg:sorted(list)举例说明>>> s = [1,4,3,5]>>> sorted(s)[1, 3, 4, 5]>>> s.sort()>>> print s[1, 3, 4, 5]>>> sorted(s)[1, 3, 4, 5]>>> s.sort(r原创 2021-08-17 16:32:35 · 93 阅读 · 0 评论 -
python之调试方法:断点
问题:linux中运行程序的时候,有错误,需要不断调试查找问题,但是总不能每个地方都打个log解决:在程序中通过python自带的pdb库import pdb pdb.set_trace()插入断点,然后启动debug,可以任意打出需要查看的参数、执行相关命令等具体示例如下:准备测试脚本:pdb_test.pyimport urllibdef func(query): return urllib.quote(query)if __name__ == "__main__":原创 2021-08-12 17:47:46 · 1963 阅读 · 0 评论 -
python之获取当前时间、今天、昨天等
当前时间:datetime.datetime.now()今天:方法一:datetime.date.today()方法二:str(datetime.datetime.now())[:10]昨天:方法一:datetime.date.today() + datetime.timedelta(days=-1) 方法二:str(now + datetime.timedelta(days=-1))[:10]原创 2021-08-10 20:59:17 · 657 阅读 · 0 评论 -
Python、Java的一些区别
共同点:二者都是面向对象的编程语言二者都是解释型语言说明:解释型语言释义,程序不需要编译,而是在运行时一句一句翻译成机器语言,每运行一次都要翻译一次,所以效率相比较低不同点:Python是弱类型语言,而Java是强类型语言说明:强类型语言:变量的使用要严格符合定义,同时变量必须先定义后使用Python一般用于爬虫、Web开发等,而Java一般用于安卓、ios开发附:python库非常丰富,简单易上手,非常多的测试开发职位中会写到熟悉python优先原创 2021-08-10 20:20:57 · 184 阅读 · 0 评论 -
python之连接列表的常用方法
问题:多个字符串split后的连接解决:方法一直接使用+,即list1+list2str1="k=1&k2=2&k3=3"str2="x=1\tx2=2\tx3=4"str1.split("&") + str2.split("\t")['k=1', 'k2=2', 'k3=3', 'x=1', 'x2=2', 'x3=4']方法二利用extend()函数,即list1.extend(list2),该函数可在列表末尾一次性追加另一个列表中的多个值原创 2021-08-06 19:14:06 · 287 阅读 · 0 评论 -
python之删除list中所有空元素:一行语句搞定
问题:有些字符串通过split分割后会产生空元素解决:利用`filter(function, list)`函数,具体为`filter(lambda x:x, list)`说明:`filter()`函数过滤掉list中不符合条件的元素,返回符合条件的元素组成的新列表filter(lambda x:x, str.split(" "))['61', '6', '0.098', '11.541']原创 2021-08-05 19:56:06 · 2361 阅读 · 0 评论 -
python之判断一个字符串是否在另一个字符串中
问题:判断一个字符串是否在另一个字符串中解决:方法一利用方法in,eg:str1 in str2,若存在,则返回True,否则返回False方法二利用方法find,eg:str2.find(str1),若存在,则返回该字符串的位置,否则返回-1示例如下>>> str1='test'>>> str2='123test456test'>>> str3='yes>>> str2.find(str1)3>>原创 2021-08-05 16:19:39 · 5972 阅读 · 0 评论 -
python之字符串左对齐
问题:一行有多个字符串输出时,多行之间显示比较杂乱预期:每一行都能左对齐清晰显示解决:利用python的ljust(width[, char])方法,该方法返回一个左对齐,并且使用指定字符填充至指定长度的新字符串说明:ljust(width[, char])其中char是可选项,但是只能为字符;若未填,则默认为空格原创 2021-08-02 17:13:40 · 2148 阅读 · 0 评论 -
python之判断变量是否定义
问题:判断一个变量是否已定义解决:方法一locals()以字典类型返回当前调用位置的全部局部变量,判断该变量是否在locals()中即可解决方法二vars([object])以字典类型返回对象object的属性和属性值说明:若object为空,则返回当前调用位置的属性和属性值,功能同locals()>>> vars(){'a': 5, 'c': 1, 'b': 6, 'd': '\xe5\xb0\x8f\xe7\xba\xa2', '__builtins__': <module '__b原创 2021-08-01 11:06:52 · 1158 阅读 · 2 评论 -
linux之重定向标准输出和标准错误
linux的标准输入、输出:标准输入:stdin,对应文件描述符0标准输出:stdout,对应文件描述符1标准错误:stderr,对应文件描述符2说明:stdout、stderr默认都会显示在终端上,一般情况,若不指定输出,只会输出标准输出>>># 标准输出重定向到新文件`xx.log`>>>python test.py > xx.log>>># 标准输出和标准错误追加到重定向到新文件`xx.log`中>>>python test.py >> xx.log 2>&1原创 2021-07-30 22:12:35 · 544 阅读 · 0 评论 -
python之md5加密
方法:使用hashlib.md5实现说明:md5加密不可逆,无法解密所有字符串生成的md5都是等长的,都是32位示例如下:>>> import hashlib>>> # 创建MD5对象>>> md5 = hashlib.md5('https://www.doc88.com/p-287604007520.html') >>> # 获取加密后的字符串>>> md5.hexdigest()'55d9c原创 2021-07-26 20:25:22 · 283 阅读 · 0 评论 -
python之url编码常用函数urlencode、quote区别
urlencode将字典参数转化为url查询字符串示例:import urllibd = {"a":1, "b":2}urllib.urlencode(d)'a=1&b=2'quote将单个字符串编码urllib.quote('1/2&3 ', safe='/') urllib.quote_plus斜杠/被编码为%2F;safe是指定某字符不urlencode,默认是空;该方法会将空格转换为+原创 2021-07-14 19:00:21 · 1282 阅读 · 0 评论 -
python之时间处理的常用方法
1. 字符串转换为时间类型print datetime.datetime.strptime("2021-07-09 15:50:59", '%Y-%m-%d %H:%M:%S')2.时间戳转换为指定的日期格式 - `datetime.datetime.fromTimestamp()`需要以秒为单位的时间戳 - 时间戳整数位一般长度为10位,单位为秒;若超过10位,单位非秒:比如毫秒:13位,微妙:16位3. 几天前/后的时间4. 求时间差的两种方法原创 2021-07-09 17:56:50 · 276 阅读 · 0 评论 -
python之解决找不到模块问题
一. 问题:运行报错,找不到本地文件及模块、自定义模块,报错示例如下$/home/tops/bin/python xxx.pyTraceback (most recent call last): File "xxx.py", line 22, in <module> from xxx.xxx import xxxImportError: No module named xxx.xxx二. 原因:import模块默认会从PYTHONPATH里寻找,但是当前要import的文件原创 2021-07-08 10:15:28 · 7613 阅读 · 1 评论 -
python之UnicodeEncodeError: ascii codec can’t encode/decode ...
问题:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)、UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)原因:python自动解码,未指明解码方式,sys.setdefaultencoding('utf-8')原创 2021-06-15 18:17:36 · 3612 阅读 · 0 评论 -
python之字典dict:明明有key,但是却报错KeyError
问题:字典从文件中读出,字典中key含中文,明明有key,但是却报错KeyError:key不存在预期:取出对应key的value解决:将key前加上u,对key进行unicode编码说明:从文件中读出的dict,其key被unicode编码了>>> dict["小红"]Traceback (most recent call last): File "<stdin>", line 1, in <module>KeyError: '\xe5\xb0\x8f\xe7\xba\xa2'原创 2021-06-15 17:52:49 · 12408 阅读 · 2 评论 -
python之解决字典打印的顺序和从文件读出的字典顺序不一致问题
问题:文件中保存的是字典,在运行脚本中读出打印的时候和文件中不一致预期:文件中和脚本中打印的字典是一致的顺序解决:利用json模块loads函数的object_pairs_hook(有序键值对)参数,并将object_pairs_hook赋值为collections模块中的有序字典OrderedDict。运行脚本 f = open("test.txt", "r") r = f.read() print json.loads(r, object_pairs_hook=OrderedDict)原创 2021-06-14 16:30:23 · 1674 阅读 · 0 评论 -
python之json数据格式化输出方法
问题:json格式数据直接print打印无格式,在数据量较多时,不便于人眼高效找到数据预期:json数据格式化输出,一行一个key、value解决:使用json模块dumps函数的参数indent示例如下dict = {"a": 4, "c": 1, "b": 3, "d": 2}print dict{'a': 4, 'c': 1, 'b': 3, 'd': 2} import jsonprint json.dumps(dict, indent=4)原创 2021-06-14 16:27:07 · 3222 阅读 · 0 评论 -
python之字典按照key赋值顺序输出:让字典有序
问题:字典每次print出的顺序和赋值时给定的key值顺序不一样(字典打印顺序和创建顺序不一致),但是有时需要保持字典key的顺序性预期:规定字典key的顺序,让字典按照赋值顺序输出解决:利用模块collections将字典定义为有序字典后再依次赋值import collectionsdict = collections.OrderedDict()示例如下:dict = {}dict["小红"] = 4dict["小花"] = 1dict["小黄"] = 2dict["小白"] =原创 2021-06-13 14:24:47 · 2839 阅读 · 0 评论 -
python之字典包含中文打印乱码解决方法
字典若包含中文,不管key、value包含中文,直接print打印,输出不是中文,是乱码-编码后的字符\xe5...预期:中文,以中文形式输出解决:使用json模块的dumps功能,切记要设置ensure_ascii=Falseprint json.dumps(dict, ensure_ascii=False)说明:若`ensure_ascii=True`(`ensure_ascii=True`为默认值)则所有非ascii字符都转义;若`ensure_ascii=False`则所有字符按原样输出原创 2021-06-13 14:02:12 · 2147 阅读 · 0 评论 -
python之字典dict排序,按key排序、按value排序
用sorted函数的key= 参数排序:按照key进行排序print sorted(dict.items(), key=lambda d: d[0]) 按照value进行排序print sorted(dict.items(), key=lambda d: d[1]) 举例说明>>> dict = {'a': 4, 'c': 1, 'b': 2, 'e': 3}>>> # 按照key进行排序>>> print sorted(dict.items(), key=lambda d: d[0])原创 2021-06-11 18:08:57 · 1570 阅读 · 0 评论