Python自动化--语言基础6--模块操作之re、MySQL、Excel
1、Python自有模块正则
import re # re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None
print(re.match("aaa","aaaabbb").group()) #在起始位置匹配
print(re.match("aaa","abbbaaa")) #不在起始位置匹配,返回None # re.search扫描整个字符串并返回第一个成功的匹配
print(re.search("haha","geinizhanggognzi").group()) # re.findall从左到右扫描字符串,按顺序返回匹配,如果无匹配结果则返回空列表
print(re.findall("\d","queshihenlihai"))
print(re.findall("\d","zhengchangfasheng")) # sub用于替换字符串中的匹配项
print(re.sub("g..t","good","goot geet up"))
# split返回切割后的列表
print(re.split("\+","123+456*789+abcd"))

1 # ['AD123453', 'AC342123', 'AR343212']
2 # [A-Z]{2}\d{6}
3
4 # ^(13|14|15|17|18)\d{9}
5 # ^1[34578]\d{9}
2、Python第三方模块操作MySQL
连接数据库:
import mysql.connector
config = {
"host":"127.0.0.1",
"user":"root",
"passwd":"vertrigo",
"port":3306,
"db":"test",
"charset":"utf8"
} try:
db = mysql.connector.connect(**config)
except mysql.connector.Error as e:
print("连接数据库失败!",str(e))
插入数据:
2 cursor = db.cursor(buffered=True) #buffered=True会把结果集保存到本地并一次性返回,这样可以提高性能
try:
#第一种:直接字符串插入方式
# sql_insert1="insert into student (name, age) values ('xiao', 27)"
# cursor.execute(sql_insert1) #第二种:元组连接插入方式
sql_insert2="insert into student (name, age) values (%s, %s)"
#此处的%s为占位符,而不是格式化字符串,所以age用%s
# data=('xiaoqiang',18)
# cursor.execute(sql_insert2,data)
data = [("xiao",20),
("xian",25),
("rourou",27),
("juju",28)]
cursor.executemany(sql_insert2,data) #如果表引擎为Innodb,执行完成后需执行commit进行事务提交
db.commit()
#cursor.execute('commit')
except mysql.connector.Error as e:
print('插入失败!', str(e))
finally:
cursor.close()
db.close()
删除数据:
cursor = db.cursor(buffered=True)
try:
sql_del = "delete from student where name=%s and age=%s"
data_del = [
("jin",28),
("songhao",27)]
cursor.executemany(sql_del,data_del)
db.commit()
except mysql.connector.Error as e:
print("删除数据失败!",str(e))
finally:
cursor.close()
db.close()
修改数据:
cursor = db.cursor(buffered=True)
try:
sql_update = "update student set age = 28 where name='nan'"
cursor.execute(sql_update)
db.commit()
except mysql.connector.Error as e:
print('修改数据失败',str(e))
finally:
cursor.close()
db.close()
查询数据:
cursor = db.cursor(buffered=True)
try:
# sql_select1 = "select * from student where age>%s"
# cursor.execute(sql_select1,(1,)) sql_select2 = "select * from student where age>%s"
cursor.execute(sql_select2,(26,))
datas1 = cursor.fetchall() #如果在后加上[1]代表是取第一条数据 cursor.execute(sql_select2,(20,))
datas2 = cursor.fetchone()[1] #如果在后加上[1]代表是取第一个字段
datas3 = cursor.fetchmany(5) print(datas1)
print(datas2)
print(datas3)
except mysql.connector.Error as e:
print("查询数据失败!",str(e))
finally:
cursor.close()
db.close()
3、Python第三方模块操作Excel
注意!!: openpyxl只能操作xlsx文件而不能操作xls文件,所以在创建的时候一定要新建.xlsx格式的Excel
import openpyxl
#打开文件
path_file = "D:/PycharmProjects/open.xlsx"
wp = openpyxl.load_workbook(path_file) print("获取所有工作表名:",wp.get_sheet_names())
# sheet = wp.get_sheet_by_name("Sheet1") #获取指定的工作表sheet
# print("获取指定的工作表名:",sheet.title)
sheet2 = wp.get_active_sheet() #获取活动的工作表sheet,一般是当前打开的sheet页
print("获取活动的工作表名:",sheet2.title) # 操作单元格:数据的读取与写入
# 获取单元格数据
print(sheet2['A1'].value)
print(sheet2.cell(row=2,column=1).value) #获取第二行第一列的值 # 数据的写入
sheet2.cell(row=4,column=1).value = "工作总结"
sheet2['C3']='cs' print("最大列数",sheet2.max_column)
print("最大行数",sheet2.max_row) # wp.save('D:/PycharmProjects/open1.xlsx') #另存为
wp.save("open.xlsx") #保存,默认保存在当前目录下
wp.save(path_file) #覆盖保存
后记:
1、Python里面match()和search()的区别?
python正则中的match是在字符串的起始位置进行匹配,如果起始位置匹配不成功就会报错。如下例子:
import re
print(re.match("www","wwccc").group())
python正则中的search是在字符串中匹配第一次匹配成功的字符串并返回。如下例子:
import re
print(re.search("ws","wwcccwss").group())
2、以<div><span>test</span></div>进行匹配
<.*>意思为:匹配以<为开始的所有的字符,遇到回车换行中断匹配
<.*>结果为:<div><span>test</span></div>
<.*?>意思为:匹配以<为开始的字符串,出现一次就返回
<.*?>结果为:
<div>
<span>
<span>
<div>
3、获取URL的后缀名
abc = ("http://www.baidu.cn/archive/6688431.html")
print(abc.split('.')[-1])
Python自动化--语言基础6--模块操作之re、MySQL、Excel的更多相关文章
- python自动化--语言基础四模块、文件读写、异常
模块1.什么是模块?可以理解为一个py文件其实就是一个模块.比如xiami.py就是一个模块,想引入使用就在代码里写import xiami即可2.模块首先从当前目录查询,如果没有再按path顺序逐一 ...
- Python自动化--语言基础4--模块、文件读写、异常
模块1.什么是模块?可以理解为一个py文件其实就是一个模块.比如xiami.py就是一个模块,想引入使用就在代码里写import xiami即可2.模块首先从当前目录查询,如果没有再按path顺序逐一 ...
- Python自动化--语言基础7--操作日志、加密、发送邮件、线程、生产者消费者
1.操作日志 logging.basicConfig:日志的统一处理器,对日志的输出格式和方式做配置日志级别等级CRITICAL > ERROR > WARNING > INFO & ...
- Python自动化--语言基础3--字典、函数、全局/局部变量
字典 dict1 = {'name':'han','age':18,'class':'first'} print(dict1.keys()) #打印所有的key值 print(dict1.values ...
- Python自动化--语言基础8--接口请求及封装
基于http协议,最常用的是GET和POST两种方法. 接口文档需要包含哪些信息: 接口名称接口功能接口地址支持格式 json/xml请求方式请求示例请求参数(是否必填.数据类型.传递参数格式)返回参 ...
- Python自动化--语言基础5--面向对象、迭代器、range和切片的区分
面向对象 一.面向对象代码示例: 1 class Test(): #类的定义 2 car = "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果 3 def ...
- Python自动化--语言基础2--运算符、格式化输出、条件语句、循环语句、列表、元组
运算符包括:算术运算符.比较运算符.赋值运算符.逻辑运算符.成员运算符.身份运算符 算术运算符 % 取模(余数) // 取相除的整数部分 / (5/2=2.5) 比较运算符 == 等于 ! ...
- python自动化--语言基础1--数据类型及类型转换
Python中核心的数据类型有哪些?变量(数字.字符串.元组.列表.字典) 什么是数据的不可变性?哪些数据类型具有不可变性数据的不可变是指数据不可更改,比如: a = ("abc" ...
- python自动化--语言基础五面向对象、迭代器、range和切片的区分
面向对象 一.面向对象简单介绍: class Test(): #类的定义 car = "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果 def __ini ...
随机推荐
- 【开发技术】web.xml vs struts.xml
web.xml用来配置servlet,监听器(Listener),过滤器(filter),还有404错误跳转页面,500,等还配置欢迎页面等,总之一句话,就是系统总配置方案写在web.xml中 str ...
- MyBatis的关于批量数据操作的测试
摘录自:http://www.linuxidc.com/Linux/2012-05/60863.htm MyBatis的前身就是著名的Ibatis,不知何故脱离了Apache改名为MyBatis.My ...
- 修真院java后端工程师学习课程--任务1(day four)
今天学习的是spring框架,内容主要有: spring的概念,主要是做什么的: Spring是一个基于IOC和AOP的结构J2EE系统的框架 IOC 反转控制 是Spring的基础,Inversio ...
- 基于esp8266的智能台灯DIY
研究esp8266已经很久了,特制作了一个智能灯, 代码如下,总结几点 一.关于arduino pro mini 的烧写方法 一定要在编译成功之后的下载提示出现的瞬间,单击复位按钮.才可进入烧写 二. ...
- linux下安装python3
不建议卸载python2 可能会导致系统内其他软件无法使用 1.下载 wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0a1.tar.x ...
- python_如何在列表、字典中筛选数据?
实际问题有哪些? 过滤掉列表[3,9,-1,10.-2......] 中负数 筛选出字典{'li_ming':90,'xiao_hong':60,'li_kang':95,'bei_men':98} ...
- selenium+python自动化测试系列(二):AutoIt工具实现本地文件上传
AutoIt使用简单说明 AutoIt的安装这里就不在啰嗦,可以参考AutoIt安装或者自行搜索解决. 第一步:定位上传文件路径的文本框 这里举例说明,如何定位?如图 这里我们看到上传文件的类型是bu ...
- IE下常见的js兼容问题
1.IE下不支持console.log() 2.IE下不支持addEventListener() 解决办法:用IE相应的attachEvent() 3.IE下请求后台接口会有缓存 解决方案,接口加版本 ...
- Unity 使用Plugins接入安卓SDK 基础篇
一.须知 本帖适合对安卓一点基础都没有,有一定Unity基础.刚刚接完一个某文档很简单的渠道SDk,也当是自己总结一下. 二.Unity中的目录创建与理解. Plugins:插件目录,该目录再编译项目 ...
- Asp.net Core 入门实战 2.请求流程
Asp.Net Core 是开源,跨平台,模块化,快速而简单的Web框架. Asp.net Core官网的一个源码合集,方便一次性Clone,喜欢的(Star),本系列持续更新,也可以通过我的网站访问 ...