[20240129]
备注:
知识整理:整理python相关知识,包括不限于python基础的关键字。随着我的学习步伐,会同步更新更多的东西
关键字
break
作用:打破循环
示例:
while True:
print("1")
break
class 类
作用:类,用于面向对象编程
示例:
class Employee:
'所有员工的基类'
empCount = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1
def displayCount(self):
print "Total Employee %d" % Employee.empCount
def displayEmployee(self):
print "Name : ", self.name, ", Salary: ", self.salary
continue
作用:打破本次循环
示例:
while True:
for i in range(10):
if i >2:
print("1")
continue
break
def 函数
作用:定义函数
示例:
def func():
print("abc")
func1 = func()
dictionary 字典
作用:字典,key+value的容器,类似于簇
示例:
dict1 = {'1':1,'2':2,'3':3}
for
示例:
for i in range(10):
print(i)
if
示例:
if a=1:
print("1")
elif a=2:
print("2")
else:
print("0")
import 模块引入
作用:引入模块,即引入其他的程序
示例:
import time
time.time
argparse
作用:获取外部输入参数的模块。用于处理 Python 命令行参数和选项,程序定义好所需参数后,该模块会通过 sys.argv 解析出那些参数;除此之外,argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
示例:
import argparse
parser = argparse.ArgumentParser() # 创建解析对象
parser.parse_args() # 解析
BeautifulSoup bs4内HTML解析库
作用:用于解析HTML信;
注意:需要在终端下载: pip install bs4 和pip install lxml
示例:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc,"html.parser")
使用方式:
1、导入库
import requests
from bs4 import BeautifulSoup
2、实例对象
Soup = BeautifulSoup(open(‘123.html’),’lxml’)
3、定位所有标签
list1 = soup.select('.high-quality-list > ul > li > a > img')
4、提取数据
for i in list1:
i= 'https:'+i['src']
print(i)
img_data = requests.get(url=i,headers=headers).content
5、保存数据
img_name = i.split('/')[-1] # 获取image名称
imgPath = 'img\\'+img_name+".png" # image存储路径
with open(imgPath,'wb') as f:
f.write(img_data)
time.sleep(0.05) # 不要太频繁提取数据,否则会被认为是在攻击网站
BeautifulSoup
将数据转换成指定格式,方便解析HTML
示例:
import requests
from bs4 import BeautifulSoup
url = "豆瓣电影"
headers = {
"user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36"
}
# 3、解析信息
soup = BeautifulSoup(requests.get(url,headers=headers).content,"html.parser")
Soup.find 查找第一个tageName
查找第一个目标string。同等与Soup.tageName。
还可以进行属性定位,用法为soup.find(tageName,属性=属性名)。
import requests
from bs4 import BeautifulSoup
soup = BeautifulSoup(open(‘123.html’),"lxml")
list1 = soup.find('div',class_='index-left') # ‘div’为目标标签,class_='index-left为目标属性名
print(list1)
Soup.find().decompose 删除第一个string
Soup.find_all 查找所有tageName
查找所有目标string。
进行属性定位,查找所有目标属性数据,用法为soup.find_all(tageName,属性=属性名)。
import requests
from bs4 import BeautifulSoup
soup = BeautifulSoup(open(‘123.html’),"lxml")
list1 = soup.find_all('div',class_='index-left') # ‘div’为目标标签,class_='index-left为目标属性名
print(list1)
list2 = soup.find_all(‘img’)
print(list2)
Soup.select() 选择tageName
选择标签,可通过’>’方式查找指定标签目录下的数据;空格表示多个层级。
from bs4 import BeautifulSoup
soup = BeautifulSoup(open(‘123.html’),"lxml")
list1 = soup.select('.high-quality-list > ul > li > a > img')[0] # 选则路径:.high-quality-list类-->ul标签-->li-->a-->img
list1 = soup.select('.high-quality-list > ul a') # 空格表示多个层级
Soup. 查找标签
查找第一个标签内数据,tageName为目标标签名。
from bs4 import BeautifulSoup
soup = BeautifulSoup(open(‘123.html’),"lxml")
list1 = soup.li
print(f"找到了{len(list1)}个数据")
print(list1)
Soup.tageName[] 获取标签属性内的文本
获取标签内的所有文本
from bs4 import BeautifulSoup
soup = BeautifulSoup(open(‘123.html’),"lxml")
list1 = soup.select('.high-quality-list > ul a > img')[0]['src'] # 获取标签内的属性文本(如’href‘、’src‘),如果属性不存在会报错
Soup.tageName.get_text() 选择标签内的所有文本
获取标签内的所有文本
from bs4 import BeautifulSoup
soup = BeautifulSoup(open(‘123.html’),"lxml")
list1 = soup.select('.high-quality-list > ul > li > a > img')[0].get_text() # 选则路径:.high-quality-list类-->ul标签-->li-->a-->img
Soup.tageName.string() 选择标签内的直系文本
获取标签内的直系文本,即往下的标签目录文本不读取。
from bs4 import BeautifulSoup
soup = BeautifulSoup(open(‘123.html’),"lxml")
list1 = soup.select('.high-quality-list > ul > li > a > img')[0].string() # 选则路径:.high-quality-list类-->ul标签-->li-->a-->img
Soup.tageName.text() 选择标签内的所有文本
获取标签内的所有文本
from bs4 import BeautifulSoup
soup = BeautifulSoup(open(‘123.html’),"lxml")
list1 = soup.select('.high-quality-list > ul > li > a > img')[0].text() # 选则路径:.high-quality-list类-->ul标签-->li-->a-->img
bs4 HTML解析库
作用:用于引用BeautifulSoup 库(需要终端输入安装:pip install bs4 或pip3 install bs4)
extree xpath解析HTML库
作用:通过xpath解析html数据;需要安装pip install lxml
注意:完整xpath路径可以在网页鼠标右键检查目标文本,而后右键复制xpth路径
示例:
from lxml import etree
with open('123.html',mode='r',encoding='utf-8') as f:
str1 = f.read()
tree = etree.HTML(str1) # 导入本地HTML文档
str = tree.xpath('//div[@class="index-left"]') # 使用xpath表达式定位标签,返回为对象;'//'表示多个层级,可以从任意层级开始查找;'@class=""'为属性定位
tree.HTML() 实例化HTML文本
用于将HTML文本实例化成extree对象,方便进行xpath数据分析。
tree.xpath 标签定位
用于标签定位;
使用xpath表达式定位标签,返回为对象;
注意:完整xpath路径可以在网页鼠标右键检查目标文本,而后右键复制xpth路径
xpth语法:
'//'表示多个层级,可以从任意层级开始查找;
//*[@id="header"]为从id=header标签开始查找
[@id="header]为属性定位,进一步定位指定标签;
/a[1]为xpath内的索引,xpath的索引是从1开始的;括号外的[1]索引为list索引,和xpath无关;
@src为查找所有属性为src的标签
//text()读取标签文本
示例:
from lxml import etree
with open('123.html',mode='r',encoding='utf-8') as f:
str1 = f.read()
tree = etree.HTML(str1) # 导入本地HTML文档
# str = tree.xpath('//div[@class="index-left"]')[1] # 使用xpath表达式定位标签,返回为对象;'//'表示多个层级,可以从任意层级开始查找;'@class=""'为属性定位
# str = tree.xpath('//div[@class="high-quality-list"]//img/@src')[1] # @src为查找所有属性为src的标签
str = tree.xpath('//*[@id="header"]/div[2]/div/p/a[1]//text()')[0] #
hashlib 哈希操作
作用:用于进行哈希操作
示例:
import hashlib
sha256_hash = hashlib.new('sha256')
sha256_hash.update(b'RUNOOB')
print(sha256_hash.hexdigest())
json 操作Json文件
作用:用于操作Json文件
示例:
import json
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
data2 = json.dumps(data)
print(data2)
json.dumps Json数组编码
json.loads 解码Json数据
Jython Java开发GUI库
Jython 程序可以和 Java 无缝集成。除了一些标准模块,Jython 使用 Java 的模块。Jython 几乎拥有标准的Python 中不依赖于 C 语言的全部模块。比如,Jython 的用户界面将使用 Swing,AWT或者 SWT。Jython 可以被动态或静态地编译成 Java 字节码。
lxml html文本解析库
用于解析html文本,需要安装pip install xlml
MySQLdb 数据库操作
操作数据库
示例:
import MySQLdb #引入mysql模块
# 打开数据库连接
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset='utf8' )
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 如果数据表已经存在使用 execute() 方法删除表。
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# 创建数据表SQL语句
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
# 执行指令,上传至数据库
cursor.execute(sql)
# 插入数据库指令
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
LAST_NAME, AGE, SEX, INCOME) \
VALUES (%s, %s, %s, %s, %s )" % \
('Mac', 'Mohan', 20, 'M', 2000)
try:
# 执行sql语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 发生错误时回滚
db.rollback()
# SQL 查询语句
sql = "SELECT * FROM EMPLOYEE \
WHERE INCOME > %s" % (1000)
try:
# 执行SQL语句
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4]
# 打印结果
print "fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \
(fname, lname, age, sex, income )
except:
print "Error: unable to fetch data"
# SQL 更新语句
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
try:
# 执行SQL语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 发生错误时回滚
db.rollback()
# SQL 删除语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:
# 执行SQL语句
cursor.execute(sql)
# 提交修改
db.commit()
except:
# 发生错误时回滚
db.rollback()
# 关闭数据库连接
db.close()
openpyxl EXCEL操作
用于操作EXCEL文件(需要在终端输入安装:pip install openpyxl 或者pip3 install openpyxl)
operator 比较
作用:用于比较的函数
示例:
import operator
# 数字
x = 10
y = 20
print("x:",x, ", y:",y)
print("operator.lt(x,y): ", operator.lt(x,y))
os 文件操作
作用:操作文件
import os
# 重命名文件test1.txt到test2.txt。
os.rename( "test1.txt", "test2.txt" )
fo = open("foo.txt", "w")
print "文件名: ", fo.name
fo.close
f.close()
关闭文件
f.read()
读取文件
f.remove()
删除文件
f.rename()
重命名文件
f.tell()
当前文件位置
f.write()
写入文件
open()
打开文件
os.childir()
改变当前目录
os.environ
表示用户的环境变量,用于获取和设置环境变量
os.getcwd
显示当前工作目录
os.mkdir()
在当前目录创建新的目录
os.rmdir()
删除目录
pyecharts 图表模块
作用:用于创建可视化图标
示例:
from pyecharts.charts import Bar
# 准备数据
x_data = ['一月', '二月', '三月', '四月', '五月']
y_data = [10, 20, 15, 25, 30]
# 创建柱状图
bar_chart = Bar()
bar_chart.add_xaxis(x_data)
bar_chart.add_yaxis("销售额", y_data)
# 也可以传入路径参数,如 bar_chart.render("bar_chart.html")
bar_chart.render()
pymysql MySQL操作
用于进行Mysql操作,DB上传。
需要安装:pip install pymysql
import pymysql
class DB(object):
'''import pymysql'''
def help(self):
help = '''Before program: You need install lib(pip install pymysql), and then import pymysql.
Create Schema: CREATE SCHEMA `mydb` DEFAULT CHARACTER SET utf8 ;
Create Table: CREATE TABLE `mydb`.`123` (`id` INT NOT NULL, `Name` VARCHAR(45) NULL, `Money` VARCHAR(45) NULL, PRIMARY KEY (`id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;
'''
print(help)
return help
def __init__(self):
config = INI_File()
config.Ini('.\cfg\config.ini')
self.db_handles = None
self.cursor = None
self.host = config.Read('DB','IP')
self.port = config.Read('DB', 'port')
self.user = config.Read('DB', 'user')
self.password = config.Read('DB', 'password')
self.db = config.Read('DB', 'db')
def connect(self):
try:
self.db_handles = pymysql.Connect(host=self.host,
port=int(self.port),
user=self.user,
password=self.password,
db=self.db,
charset='utf8')
self.cursor = self.db_handles.cursor()
log = f'Connect Pass, {self.host,self.port,self.user,self.password,self.db,"utf8"}.'
except Exception as e:
log = f'Connect Fail, {self.host,self.port,self.user,self.password,self.db,"utf8"}.\r\n{e.__str__()}'
return log
def upload(self,data):
'''The tool use to run SQL CMD.
The keyword must uppercase.关键字必须大写.'''
try:
self.cursor.execute(data) # 运行语句,使用pymysql.connect.curssor handle来操作。
self.db_handles.commit() # 上传DB语句,使用pymysql.connect handle来操作。
if 'UPDATE' in data:
return 'Update data Pass.'
elif 'INSERT' in data:
return 'Insert data Pass.'
elif 'SELECT' in data:
return self.cursor.fetchall(), 'Search data Pass.'
except Exception as e:
log = e.__str__()
if '1062' in log:
log = f'Have same value in DB table.\r\n{log}'
elif '1064' in log:
log = f'SQL CMD error.\r\n{log}'
elif '1136' in log:
log = f'Have error value in update data.\r\n{log}'
elif '' in log:
log = f'.\r\n{log}'
print(f'upload Fail.\r\n{log}')
pass # DB调试程序
# d = DB()
# print(d.connect())
# print(d.upload('insert into cssc (SERIAL_NUMBER, MANUFACTURER, ASSEMBLY_DATE) values ("S3", "8563", "2024-01-23 10:19:42")'))
# UPDATE `cssc` SET `ASSEMBLY_DATE`='2024-01-23 10:19:42' WHERE (`SERIAL_NUMBER`='S2') AND (`MANUFACTURER`='8563')
# a = '0,1000'
# b = 'daredevil_elektra.cssc'
# da1 =f'SELECT * FROM {b} LIMIT {a};' # 切割select语句
# a = 'SERIAL_NUMBER, MANUFACTURER, ASSEMBLY_DATE'
# b = '"S5", "8563", "2024-01-23 10:19:42"'
# da1 = f'INSERT INTO cssc ({a}) VALUES ({b})' # 切割insert语句
# a=('ASSEMBLY_DATE','2024-01-23 10:19:42')
# da1 = f'UPDATE cssc SET {a[0]} = "{a[1]}" WHERE (SERIAL_NUMBER="S2")' #切割update语句
# print(d.upload(da1))
pass
pyserial 串口通讯
用于串口通讯
需要安装:pip install pyserial
资料来源:https://www.cnblogs.com/L707/p/16364448.html
import serial
# windows串口设置
ser = serial.Serial(
port=None, #设置串口号
baudrate=9600, # 波特率
bytesize=EIGHTBITS, # 数据位数
parity=PARITY_NONE, # 奇偶校验位
stopbits=STOPBITS_ONE, # 停止位
timeout=None, # 读超时设置
xonxoff=0, # 软件流控,流程控制,解决数据丢失问题
rtscts=0, # 硬件流控,
#pc机中常用的两种流控制是硬件流控制(包括rts/cts、dtr/cts等)和软件流控制xon/xoff(继续/停止)
interCharTimeout=None) # 字符间隔超时
# 不同平台下的串口设置
# ser=serial.Serial("/dev/ttyUSB0",9600,timeout=0.5) #使用USB连接串行口
# ser=serial.Serial("/dev/ttyAMA0",9600,timeout=0.5) #使用树莓派的GPIO口连接串行口
# ser=serial.Serial(1,9600,timeout=0.5)#winsows系统使用com1口连接串行口
# ser=serial.Serial("com1",9600,timeout=0.5)#winsows系统使用com1口连接串行口
# ser=serial.Serial("/dev/ttyS1",9600,timeout=0.5)#Linux系统使用com1口连接串行口
# 常用方法
ser.isOpen():查看端口是否被打开。
ser.open() :打开端口‘。
ser.close():关闭端口。
ser.read():从端口读字节数据。默认1个字节。
ser.read_all():从端口接收全部数据。
ser.write("hello"):向端口写数据。
ser.readline():读一行数据。
ser.readlines():读多行数据。
in_waiting():返回接收缓存中的字节数。
flush():等待所有数据写出。
flushInput():丢弃接收缓存中的所有数据。
flushOutput():终止当前写操作,并丢弃发送缓存中的数据
re 正则表达式
作用:正则表达式
示例:
import re
print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配
.*? 缺省表达式
缺省表达式,用于忽略中间内容。一般搭配re.findall使用
re.compile 查找头部
生成正则表达式的对象
import re
pattern = re.compile(r'\d+') # 用于匹配至少一个数字
m = pattern.match('one12twothree34four') # 查找头部,没有匹配
re.findall 查找所有
查找所有对象
import re
str1 = '
class="figure-size-222-295".*?
'
ex = '
img_src_list = re.findall(ex,str1,flag = re.S)
re.match()
作用:从起始位置匹配字符串
示例:
import re
print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配
re.search()
查找字符串
import re
print(re.search('www', 'www.runoob.com').span()) # 在起始位置匹配
re.split()
分割字符串
import re
re.split('o', 'hello world')
re.sub()
替换字符串
import re
phone = "2004-959-559 # 这是一个国外电话号码"
# 删除字符串中的 Python注释
num = re.sub(r'#.*$', "", phone)
print "电话号码是: ", num
requests HTTP请求库
作用:用于HTTP通讯,抓取信息(需要在终端输入安装:pip install requests 或者pip3 install requests)
import requests
# 请求头,模拟浏览器向ul发送请求
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36"
}
data1 = requests.get("豆瓣电影",headers=headers)
print(data1.status_code) # 获取响应状态,200为ok
data = data1.text # 提取string数据
print(data)
requests.get 爬取数据
requests.get().content 数据转换为二进制文本
requests.get().json 数据转换为对象
requests.get().text 数据转换为字符串文本
requests.get().status_code 获取请求状态
200为正常读取;404为访问不存在;
smtplib SMTP发送邮件
import smtplib
from email.mime.text import MIMEText
from email.header import Header
sender = 'from@runoob.com'
receivers = ['429240967@qq.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
message['From'] = Header("菜鸟教程", 'utf-8') # 发送者
message['To'] = Header("测试", 'utf-8') # 接收者
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message.as_string())
print "邮件发送成功"
except smtplib.SMTPException:
print "Error: 无法发送邮件"
socket TCP/TP通讯
作用:用于进行TCP/IP通讯
示例:
import socket # 导入 socket 模块
s = socket.socket() # 创建 socket 对象
host = socket.gethostname() # 获取本地主机名
port = 12345 # 设置端口
s.bind((host, port)) # 绑定端口
s.listen(5) # 等待客户端连接
while True:
c,addr = s.accept() # 建立客户端连接
print '连接地址:', addr
c.send('欢迎访问菜鸟教程!')
c.close() # 关闭连接
statistics 统计计算函数
作用:可以帮助我们分析和计算数据集的统计特征
subprocess 子进程
创建子进程,可用于调用外部文件。
示例:
import subprocess
ret = subprocess(“serial_swap.py”,shell=true,cwd=”c:\iRobot”)
thread 多线程
作用:实现多线程测试的模块
示例:
import thread
import time
# 为线程定义一个函数
def print_time( threadName, delay):
count = 0
while count < 5:
time.sleep(delay)
count += 1
print "%s: %s" % ( threadName, time.ctime(time.time()) )
# 创建两个线程
try:
thread.start_new_thread( print_time, ("Thread-1", 2, ) )
thread.start_new_thread( print_time, ("Thread-2", 4, ) )
except:
print "Error: unable to start thread"
while 1:
pass
getName():
返回线程名。
isAlive():
返回线程是否活动的。
join([time]):
等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。
run():
用以表示线程活动的方法。
setName():
设置线程名。
start():
启动线程活动。
threading.activeCount():
返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。
除了使用方法外,线程模块同样提供了Thread类来处理线程,Thread类提供了以下方法:
threading.currentThread():
返回当前的线程变量。
threading.enumerate():
返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
tkinter 标准GUI库
作用:Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
示例:
#from tkinter import *
root = Tk() # 创建窗口对象的背景色
# 创建两个列表
li = ['C','python','php','html','SQL','java']
movie = ['CSS','jQuery','Bootstrap']
listb = Listbox(root) # 创建两个列表组件
listb2 = Listbox(root)
for item in li: # 第一个小部件插入数据
listb.insert(0,item)
for item in movie: # 第二个小部件插入数据
listb2.insert(0,item)
listb.pack() # 将小部件放置到主窗口中
listb2.pack()
root.mainloop() # 进入消息循环
time 时间获取
作用:获取日期和时间的模块
示例:
import time
print(time.time())
urllib.requests HTTP请求库
作用:用于向HTTP发送请求
示例:
import urllib.request #导入urllib库
url = urllib.request.urlopen("百度一下,你就知道") #需要抓取数据的网站
data = url.read()
dt1 = open("2.html","wb") # 生成html文件,使用了相对路径
# dt1 = open("2.xls","wb") # 生成xls文件,使用了相对路径
dt1.write(data) #将数据写入D:/Code/data/2.xls表中
dt1.close()
print(data)
wxPython 开源GUI库
wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能健全的 GUI 用户界面。
input 等待用户输入
作用:等待用户输入字符串
示例:
str = input(请输入:)
list 列表
作用:等同于数组
list1 = [1,2,3]
number 数字
作用:数字
pass 空语句
作用:空语句,保持程序完整性
if True:
pass
print 打印文本
作用:打印信息
示例:
print("abc")
运算符
+加、减-、乘*、除/、取余%、**幂、//取整除
string 字符串
作用:字符串
s.find 查找
查找字符串是否存在
in 检测存在
检测字符串是否存在在string内
"etqw"in s
join 连接字符串
连接字符串数组,形成字符串
"_".join(lst) # 以”_“连接字符串数组,形成字符串
len 字符串长度
计算string长度
len(s0)
s.index 索引
查找字符串的索引位置
s.replace 替换字符串
s0=”asdfhj”
s0.replace("a","g")
s.split 分割字符串
s1.split("_") # 以”_”字符切割字符串成数组
return 返回值
作用:1、返回函数的返回值;2、终⽌程序的运⾏,提前退出。
示例:
def mylen():
# 函数体 缩进代表包含意思
a='hello'
length=0
for i in a :
length+=1
# print(length)
return length
try 错误处理
作用:异常处理
示例:
try:
fh = open("testfile", "w")
fh.write("这是一个测试文件,用于测试异常!!")
except IOError:
print "Error: 没有找到文件或读取文件失败"
else:
print "内容写入文件成功"
fh.close()
finally:
print "Error: 没有找到文件或读取文件失败"
tuple 元组
作用:元组,不可修改的数组
示例:
tup1=(1,2,3)
while
示例:
while True:
print("1")
break
->
作用:为函数添加元数据,描述函数返回的类型。
示例:
def add(x:int, y:int) ->bool:
if(x>y):
return True
else:
retur False
这里,表明了函数的参数传入为int类型,输出的类型为bool类型。
xml 解析XML
SAX (simple API for XML )
Python 标准库包含 SAX 解析器,SAX 用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。
DOM(Document Object Model)
将 XML 数据在内存中解析成一个树,通过对树的操作来操作XML。
ElementTree(元素树)
ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。