目录
定位技巧篇
笔者常使用的是(pyquery+re)进行定位HTML数据,遇到json数据直接一层层剥离即可
etree定位
from lxml import etree
tree = etree.HTML(response)
public_key = tree.xpath('//input[@id="e"]/@value')[0]
遇到字典数据格式可以转成json,并一层层剥离进行定位:
import json
do=json.loads(raw_json)#转换为json数据
data_list=do['data']['response']['videos']
遇到不干净的字典数据可以先进行整理,并一层层剥离
KZLoginHandler.jsonpCallbackKongZ({“dc”:“3D819DDC47FD044C38DB02DA22DC1F2C”,“kzmsg”:“”,“service”:“https://passport.kongzhong.com/”,“state”:“0”})
import re
import json
re = 'KZLoginHandler.jsonpCallbackKongZ\((.*?)\)'
raw_json = re.findall(re.raw_json)
do=json.loads(raw_json)#转换为json数据
data_list = do['dc']
re正则表达式定位
import re
ex = 'var rsa_n = "(.*?)";'
re.findall(ex,response)[0] #正则返回的是一个列表,这里取值第1个元素即可
python常用函数总结
eval()
将输入的值转换为数值型
a=eval(input("请输入数字"))
remove
移除指定列表值
list=["cat"]
list.remove("cat")
pop
移除列表中最后一个值,默认也是移除最后一个
list.pop(-1)
.get
获取字典中的值,如果值不存在则返回{}
dic={"value":1,"key":2}
res=dic.get["value",{}] #获取字典为value的值
del dic[“keys”]
dic={"value":1,"key":2}
del dic["key"] #删除字典为key的键值对
split()
可以将一串文本通过空格进行分割
a="1,2,3,4"
a.splite(",")
输出:['1', '2', '3', '4']
set() list()
可以将集合转换为列表,通过将数据进行转换为集合再转回列表,可以完成对数据的去重
set(x) 转换为集合
list(x) 转换为列表
insert
x=[1,2,3,4]
x.insert(0,10) #表示再第一位数前面插入10
upper()
小写转大写
str.upper()
lower()
大写转小写
str.lower()
enumerate
配合list使用,标注出下标
x =["test1","test2"]
list(enumerate(x))
输出:>>>[(0, 'test1'), (1, 'test2')]
isinstance()
功能和type类似,判断类型
a=2
isinstance(a,int)
#如果是int类型则返回True
find()
返回pea从下标第几位开始的,没有则返回-1
'apple.peach,banana,pear'.find('pea')
ljust()
将a的长度调整为10
a.ljust(10)
item
将字典的值转换为元组[(x,y)]
(1,3),(2,4),(3,5)
补充:
序列=x,y,z
元组(x,y)
集合{x,y,z}
列表[x,y,z]
字典{x:1,y:2}
join()
可以将列表中的元素取出,并使用分隔符进行分割
k=["a","b","c","d"]
'-'.join(k)
输出:'a-b-c-d'
-------------------------------------------
"".join(re.split('[sd]','asdssfff'))
输出:'afff'
-------------------------------------------
x={i:str(i+3) for i in range(3)}
"".join(x.values()) # key:values
输出:
345
print(1,2,3,sep=':')
print的这个写法可以实现与join类似的功能
可以作为取出空格的方法:
k=“a b c d” #一开始其中有空格
k=k.split()
k
[‘a’, ‘b’, ‘c’, ‘d’]
“”.join(k)
‘abcd’ #取出空格了
sort()
可以将列表自动排序,支持英文排序
a=[5,4,3,1,2]
a.sort()
输出:[1,2,3,4,5]
sorted([13,1,237,89,100],key=lambda x:len(str(x)))
random
random.sample
配合random用,可以实现抛硬币效果
random
list=[“正”,“反”,“中立”]
random.sample(list,1) #1表示再其中任意取出一个
补充:
> random.choice(list) 可以随机取出一个
## map
之前遇见的一种写法,记录一下:
```php
a,b=map(int,input("输入").split(","))
random.shuffle
shuffle;洗牌
将列表里的值随机打乱顺序
list[1,2,3,4,5]
random.shuffle(list)
strip()
默认移除空格,也可以在里面添加字符实现移除指定字符
"asdf".strip("af")
输出为"sd"
next()
可以返回出迭代器的下一个对象,配合iter使用:
list=iter([1,2,3,4])
print(next(list))
print(next(list))
rjust()
rjust(x,y),作用是判断一个值是否为x位,如果小于x,则自动补充y在值的左边
res="6"
res2=res.rjust(2,"0")
print(res2)
##输出:"06"
hex()
输出为10进制,但是格式会输出为:0x开头
print(hex(1))
##输出:0x1
小技巧:
可以使用如下代码,输出结果不会附带0x
print("%x" %(1))
其他补充:
可以通过下面这种方式给传递的参数定义一个默认值
def fun(x,y="Name",z="No"):
print(x,y,z)
pass
使用技巧
例如某个数组为:
series_list=[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [10, 5, 3, 2], [1, 0, 5, 8], [2, 10, 15, 11]]
倒转矩阵
[d[i] for d in series_list]
# 输出结果
[0, 0, 0, 0, 10, 1, 2]
[0, 0, 0, 0, 5, 0, 10]
[0, 0, 0, 0, 3, 5, 15]
[0, 0, 0, 0, 2, 8, 11]