一、python自有模块正则

 import re

 # re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None
print(re.match("www","wwwwccc").group()) #在起始位置匹配
print(re.match("www","wcccwww")) #不在起始位置匹配,返回None # re.search扫描整个字符串并返回第一个成功的匹配
print(re.search("haha","woshihahanishishui").group()) # re.findall从左到右扫描字符串,按顺序返回匹配,如果无匹配结果则返回空列表
print(re.findall("\d","one1two2three3four4"))
print(re.findall("\d","onetwothreefour")) # sub用于替换字符串中的匹配项
print(re.sub("g..t","good","goot geet up"))
# split返回切割后的列表
print(re.split("\+","123+456*789+abcd"))

group及groups区别:

re.compile将正则字符串编译成正则表达式对象:

 # ['AD123453', 'AC342123', 'AR343212']
# [A-Z]{}\d{} # ^(||||)\d{}
# ^[]\d{}

推荐一个正则表达式的小工具:https://pan.baidu.com/s/1EXrSF5pS8hJ7050BOOtL9w

二、python第三方模块操作MySQL

连接数据库:

 import mysql.connector
config = {
"host":"127.0.0.1",
"user":"root",
"passwd":"vertrigo",
"port":,
"db":"test",
"charset":"utf8",
    "buffered"='True'
} try:
db = mysql.connector.connect(**config)
except mysql.connector.Error as e:
print("连接数据库失败!",str(e))

插入数据:

  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',)
# cursor.execute(sql_insert2,data)
data = [("xiao",),
("xian",),
("rourou",),
("juju",)]
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 = [
("cui",),
("hao",)]
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='kai'"
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,(,)) sql_select2 = "select * from student where age>%s"
cursor.execute(sql_select2,(,))
datas1 = cursor.fetchall() #如果在后加上[]代表是取第一条数据 cursor.execute(sql_select2,(,))
datas2 = cursor.fetchone()[] #如果在后加上[]代表是取第一个字段
datas3 = cursor.fetchmany() #返回5条数据 print(datas1)
print(datas2)
print(datas3)
except mysql.connector.Error as e:
print("查询数据失败!",str(e))
finally:
cursor.close()
db.close()

三、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=,column=).value) #获取第二行第一列的值 # 数据的写入
sheet2.cell(row=,column=).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])
												

最新文章

  1. java时间
  2. Android自定义ViewGroup,实现自动换行
  3. C#:MapControl基本操作代码整理
  4. Linux shell 获取当前时间之前N天
  5. PHP初学留神(三)
  6. [ACM] hdu 4405 Aeroplane chess (概率DP)
  7. OpenStack安装与配置2
  8. hdu 4277 USACO ORZ (dfs暴搜+hash)
  9. android 在5.0以后不允许使用隐式Intent方式来启动Service
  10. Java I/O之NIO Socket
  11. 利用Java生成UUID
  12. django搭建web (一)
  13. 关于Java中的Null
  14. js 读取xml文件
  15. JavaScript遍历集合(for...of/for...in/forEach)
  16. PAM unable to dlopen(/lib/security/pam_limits.so): /lib/security/pam_limits.so: wrong ELF class: ELFCLASS32
  17. redis实现与分析-多机数据库
  18. ubuntu系统创建新用户并赋予sudo权限
  19. phpstudy升级mysql版本到5.7 ,重启mysql不启动
  20. jzoj2941

热门文章

  1. react的类型检查PropTypes自React v15.5起已弃用,请使用prop-types
  2. Moravec算子
  3. Jenkins安装与使用
  4. datagrid行操作
  5. .net Core使用Orcle官方驱动连接数据库 C#参考教程 http://www.csref.cn
  6. JQuery图例
  7. jvm实例的个数
  8. EL 隐含对象
  9. JavaScript倒计时类
  10. bzoj 1497(最大权闭合子图)