Python常用函数+定位技巧总结

定位技巧篇

笔者常使用的是(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正则表达式定位

正则表达式re.findall快速入门

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]
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向阳-Y.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值