如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
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