如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
mac下载/安装环境
https://www.python.org/downloads/release/python-372/
测试是否安装(命令行)
python3 //mac自带python2
出现尖括号>>> 可输入python代码
代码工具pycharm
dmeo(hrllo.py)
print("hello py");
右键点击 run 'hello'
数据类型
1.数字
整数
浮点数
2.字符串
3.列表
4.元组
5.集合
6.字典
声名变令
aaa = 1 声明变量
print(aaa) //输出
print(type(aaa)) //类型
bool
True False
运算符
算数运算符
+-*/
取模%
幂**
取整除//
赋值运算符
加等于+=
减等于-=
乘等于*=
除等于/=
模等于%=
幂等于**=
取整除等于//=
进制运算
十转二 bin(16)
十转八 oct(16)
十转十六 hex(16)
二转十 int('10',2)
八转十 int('10',8)
十六转十 int('10',16)
位运算
按位与运算 &
按位或运算 |
按位异或运算 ^
按位取反运算 ~
左移运算符 <<
右移运算符 >>
比较运算符
成员运算符
in not in
逻辑运算符
条件控制
if_see = True
if if_see:
print("111")
else:
print("222")
----------
aa = input("请输入数字")
if aa==11:
print("11")
elif aa==22:
print("22")
else:
print("99")
强制转化
int('11')
str(11)
float()
声明字符串
单引/双引/三引
字符串操作
ss = 'hello'
print(ss[0])
访问字符串中的切片
print(ss[0:6]) //左闭右开
包含运算 in
print(s2 in s1)
不包含运算 not in
转义字符 \
原始字符串输出
print(r"hello\npy")
print(R"hello\npy")
格式化输出
print("我叫%s,今年%d岁了" %('小米',10))
查找字符串 find
s = "Hello py".find("h")
转换为小写
print("Hello py".lower())
转换为大写
print("Hello py".upper())
返回字符串长度
print("Hello py".__len__())
判断字符串是否只包含空格
print("a ".isspace())
字符串替换
print("Hello pt".replace('t','y'))
查看python自带的文档
python3 -m pydoc -p 8888
loclahost:8888
list 列表 一组数据
有序
list1 = []
访问列表
list1[0]
list1[2:]
列表添加
1. list1.append('aa')
2. list1 = list1+['bb','cc']
列表删除
del list1[0]
嵌套列表
[[],[]]
列表元素个数
len(list1)
移除列表中的元素,并返回删除的值
list1.pop(1)
list1.remove('a')
对列表中元素进行排序
list1.sort()
查找列表中第一个匹配的元素的索引值
list1.index('a')
元组 tuple
t=(1,2,4)
与list的区别
不能修改,只能访问
集合 {}
无序,不重复 (有去重功能)
a = set('abcd')
b = set('bcde')
print(a & b)
print(a | b)
print(a ^ b)
添加元素
my = set(('aa','bb','cc'))
my.add('dd')
移除指定元素
my.remove("bb")
随机移除
my.pop()
计算个数
len(my)
清空集合
my.clear()
in
字典
一种可变容器类型 可储存任何对象
key : value
d = {'aa':'111','22':'bb'}
d.keys()
d['aa']
增加
更新
删除 del(d['aa']
in
ASCII转数字 ord('a')
数字转ASCII chr(66)
一行太长要在末尾加上\
真假值判断
and
or
not
查看地址
id(aa)
循环
i=1
while i < 100:
print ("aa")
i++
for i in range(11):
print ("aa")
i++
break
直接跳出循环
continue
本次循环结束,执行下次循环
冒泡排序
nums = [3,1,25,10,15,6,8]
for i in range(len(nums)-1):
for j in range(len(nums)-i-1):
if nums[j]>nums[j+1]:
nums[j],nums[j+1] = nums[j+1],nums[j]
print("第"+str(j)+"次内循环"+str(nums))
print("第"+str(j)+"次外循环"+str(nums))
print("最后的结果:"+str(nums))
工程结构
包>模块>类>方法/变量
包/模块命名
小写字母+下划线
类
驼峰命名,首字母大写 私有类下划线开头
函数/变量命名
小写字母+下划线 私有下划线开头
常量
大写字母 下划线 私有下划线开头
特殊模块 __init__.py
包含了__init__.py才能称为包
导包路径
from .my_pack import init_test
import part3.my_package.init_test as p
函数
def my_function():
函数的参数
def my_function(p1,p2):
关键字参数
my_function(p1='11',p2='22'):
默认参数
def my_function(p1='11',p2):
递归
5的阶乘
def f(x):
if s==1:
return 1
print("计算"+str(x)+"*"+str(x-1))
return x * f(x-1)
print(f(5))
递归查找
特殊函数
__name__
只有在本模块启动时,__name__变量等于__main__
使用:
1.可以作为这个模块的入口,在其他语言中也叫作main函数
2.也可以作为调试使用,原因:在其他模块调用本模块时,__name__=="main" 判断结果为false,所以不会执行
变量作用域
正则表达式
demo
import re
reg_string = "vdfvfdvfd"
reg = "dddd"
result = re.findall(reg,reg_string)
//search()的工作方式和match()完全一样,不同之处在于search()会用它的字符串参数,
//在任意位置对给定的正则表达式模式搜索第一次出现的匹配情况。
//如果匹配成功,就会返回一个匹配对象。
result = re.search(reg,reg_string)
result = re.search(reg,reg_string).group(0)
//match只匹配开头,有就返回,没有就报错
result = re.match(reg,reg_string).group(0)
re.I 不区分大小写
result = re.match(reg,reg_string,re.I).group(0)
参考:
https://blog.csdn.net/qq_39521554/article/details/79462405
贪婪---尽可能多的匹配
非贪婪---尽可能少的匹配
* 重复零次或更多次 ?
+重复一次或更多次 ?
?重复零次或一次 ?
Xpath
/ 从根节点进行选择元素
// 从匹配的当前节点来对文档中的节点进行选择
. 选取当前节点
.. 选取当前节点的父节点
@ 选择属性
通配符
* 匹配任何元素节点
@* 匹配任何属性节点
| 和
demo
body/div 选取属于body的子元素中的所有div元素
//div 选取所有div标签的子元素,而不管它们在HTML文档中的位置
@lang 选取名称为lang的所有属性
//* 选取文档中所有元素
//title[@*] 选取所有带属性的title元素
//body/div | //body/li 选取body元素的所有div元素和li元素
//div | //li 选取文档中所有的div 和li
王明昌博客
