python re模块json模块xlrd模块sys

re模块,正则表达式  json模块 xlrd模块sys

一、python的re模块

1、正则匹配,使用re模块

2、正则表达式是一种对字符和特殊字符操作的逻辑公式,用正则表达字符来过滤的逻辑

3、re正则表达式作用:

快速高效查找和分析字符,进行匹配如:查找、比对、匹配、替换、插入、添加、删除等

二、认识正则表达式的特殊元素:

\d:数字0-9

\D:非数字

\s:空白字符

\n:换行符

\r:回车符re模块数量词匹配:

符号^:表示的匹配字符以什么开头

符号$:表示的匹配字符以什么结尾

符号*:匹配*前面的字符0次或n次

eg:ab* 能匹配a 匹配ab 匹配abb

符号+:匹配+前面的字符1次或n次

符号?:匹配?前面的字符0次或1次

符号{m}:匹配前一个字符m次

符号{m,n}:匹配前一个字符m到n次(包括n次),m或n可以省略,mn都是

正整数

(1)findall

从第一个字符开始查找,找到全部相关匹配为止,找不到返回一个列表[]

案例:

# import re
# str1='123ttsfgh'
# s=re.findall('f',str1)
# print(s) #['f']
#
# import re
# str1='123ttsfgh'
# s=re.findall('t',str1)
# print(s) #['t', 't']

(2)search

从第一个字符开始查找、一找到就返回第一个字符串,找到就不往下找,找不到则报错

案例:

import re
str1='fr235bbgbgf'
s=re.search('r',str1)
print(s) #<re.Match object; span=(1, 2), match='r'>

import re
str1='fr235bbgbgf'
s=re.search('6',str1)
print(s) #None

(3)match

从第一个字符开始匹配,如果第一个字符不是要匹配的类型、则匹配失败并报错

注意:如果规则带了'+' ,则匹配1次或者多次,无'+'只匹配一次

import re
str1='3r4r4r3t'
s=re.match('s',str1)
print(s)  #None

import re
str1='3r4r4r3t'
s=re.match('r',str1)
print(s)  #None

(三)实操

\d:数字0-9

案例:

# import re
# str='1e2er3r3'
# s=re.findall('\d',str)
# print(s) #['1', '2', '3', '3']

\D:非数字

案例:

# import re
# str1='eeee3333r3r3'
# s=re.findall('\D',str1)
# print(s) #['e', 'e', 'e', 'e', 'r', 'r']

\s:空白字符

# import re
# str='23rrrr r'
# s=re.findall('\s',str)
# print(s) #[' ']

\n:换行符

import  re
str1="abcd1 ee\nfg a3 m6\n n"
s=re.findall("\n",str1)
print(s) #

\r:回车符

re模块数量词匹配:

符号^:表示的匹配字符以什么开头

import re
str='aabcdd'
s=re.findall('^a',str)
print(s) #['a']

import re
str='aabcdd'
s=re.findall('^d',str)
print(s) #[]

符号$:表示的匹配字符以什么结尾

import re
str='dddeeer'
s=re.findall('d$',str)
print(s) #[]

import re
str='dddeeer'
s=re.findall('r$',str)
print(s) #['r']

符号*:匹配*前面的字符0次或n次

import re
str='t4t4t4t4'
s=re.findall('t*',str)
print(s) #['t', '', 't', '', 't', '', 't', '', '']

import re
str='t4t4t4t4'
s=re.findall('4*',str)
print(s) #['', '4', '', '4', '', '4', '', '4', '']

eg:ab* 能匹配a 匹配ab 匹配abb

符号+:匹配+前面的字符1次或n次

import re
str='t4t444t444t4'
s=re.findall('4+',str)
print(s) #['4', '444', '444', '4']

符号?:匹配?前面的字符0次或1次

import re
str='t4t444t444t4'
s=re.findall('4?',str)
print(s) #['', '4', '', '4', '4', '4', '', '4', '4', '4', '', '4', '']

符号{m}:匹配前一个字符m次

import  re
str1="abaaaacaad"
s=re.findall("a{3}",str1)
print(s) # ['aaa']

符号{m,n}:匹配前一个字符m到n次(包括n次),m或n可以省略,mn都是正整数

import re
str='aaawwwwqqqqrr'
s=re.findall('a{1,5}',str)
print(s) #['aaa']

\w

匹配[A-Za-z0-9]

import re
str1='aass!!aa#aa1aa1d'
s=re.findall('\w',str1)
print(s) #['a', 'a', 's', 's', 'a', 'a', 'a', 'a', '1', 'a', 'a', '1', 'd']

\W

匹配非[A-Za-z0-9]

import re
str1='aass!!aa#aa1aa1d'
s=re.findall('\W',str1)
print(s) #['!', '!', '#']

json模块

(1)python中的json(java   script   object   notation)格式是轻量级的文本数据交互格式

(2)json和字典一样

json模块可以实现json数据的序列化和反序列化

(1)序列化:将可存放在内存中的python 对象转换成可物理存储和传递的形式

实现方法:load() loads()

(2)反序列化:将可物理存储和传递的json数据形式转换为在内存中表示的python对象

实现方法:dump() dumps()

一、将python数据类型换成字典

json.dump  

json.dumps

二、将json格式转换成python类型

(1)dumps 将python类型转换成json格式的字符串

import json
d={"name":"zs","age":18,"isonly":True}#true改成string转换小写
print(type(d)) #<class 'dict'>
print(d) #{'name': 'zs', 'age': 18, 'isonly': True}
js=json.dumps(d,ensure_ascii=False)#解决中文乱码
print(js) #{"name": "zs", "age": 18, "isonly": true}
print(type(js)) #<class 'str'>

备注:

1、python中的字典是单引号,字符是双引号

2、字典是大写True,   字符是小写

(2)dump 将python类型转换成json格式保存为json文件中

创建json文件
import json
d={"name":"zs","age":18}
print(type(d)) #<class 'dict'>
print(d) #{'name': 'zs', 'age': 18}
js=json.dump(d,open(r"d.json","w"))
#往文件中添加字符json
import json
j={'name':'zs','age':18,"no":["123","456"],"sex":"男","isonly":True}
print(j)
print(type(j))
jsonzfc=json.dumps(j,ensure_ascii=False)# 将一个字典转换称json
print(jsonzfc)
print(type(jsonzfc))#dumps
json.dump(j,open("data.json","a"))
#indent=4    indent 分隔符  ,排序
import json
j={'name':'zs','age':18,"no":["123","456"],"sex":"男","isonly":True}
print(j)
print(type(j))
jsonzfc=json.dumps(j,indent=4,ensure_ascii=False)# 将一个字典转换称json
print(jsonzfc)
print(type(jsonzfc))#dumps
json.dump(j,open("data.json","a"))

import json
j={'name':'zs','age':18,"no":["123","456"],"sex":"男","isonly":True}
print(j)
print(type(j))
jsonzfc=json.dumps(j,indent=4,ensure_ascii=False)# 将一个字典转换称json
print(jsonzfc)
print(type(jsonzfc))#dumps
json.dump(j,open("data.json","a",encoding='utf-8'),ensure_ascii=False,indent=4)
#字符在文件中中文处理办法encoding='utf-8'),ensure_ascii=False 格式化四个字符indent=4

对json中字符 排序 :sort_keys=True   排序

jsonzfc=json.dumps(j,indent=4,ensure_ascii=False,sort_keys=True)# 将一个字典转换称json

(3)loads 将json格式的字符串转换成python类型对象

import  json
str1='{"name": "zs", "age": 18}'
print(type(str1)) #<class 'str'> json格式
d=json.loads(str1)
print(d) #{'name': 'zs', 'age': 18}

print(type(d)) #<class 'dict'> 字典

import json
json2='["a","b" ,{"no": 123, "sex": "男"}]'
print(type(json2))# <class 'str'>
listgs=json.loads(json2)
print(type(listgs)) #<class 'list'>

(4)load 将文件中的json格式的文件中读取数据转换成python类型对象

import  json
d=json.load(open(r"F:\pythonProject\d.json","r"))
print(d) #{'name': 'zs', 'age': 18}
print(type(d)) #<class 'dict'>

总结:

1、将python字符类型转化成json格式

dumps 、dump

2、将json格式转换成python字符类型

loads 、load

3、python字符类型:

字符串、字典、元组、列表、集合

xlrd模块

(1)xlrd是可用于读取excel表格数据(不支持写操作,写操作需要xlwt模块实现)
(2)支持xlsx 和xls 格式的格式的表格(不支持csv文件,csv文件可用python自带的csv模块操作)
(3)模块安装方式:pip3 install xlrd
(4)模块导入方式:import xlrd

一、在dos中安装xlrd
pip install xlrd==1.2.0

pip3 install xlrd ==1.2.0

pip list查看是否安装成功


卸载xlrd:
pip uninstall xlrd 卸载xlrd

第二种安装方式:
1、

版本1.2.0

二、新建一个xlsx表格
1、编辑表格 

2、
import xlrd
data=xlrd.open_workbook(r"D:\ls\cb\ss.xlsx")
print(data.sheets()) #通过索引获取sheet对象
print(data.sheet_by_index(0))#通过索引获取sheet对象
#print(data.sheet_by_name(“gs1”)) ##通过名称获取sheet对象
print(data.sheet_names()) #获取names返回表中所有的工作名字

=============================================================
3、实战xlrd
import xlrd
data=xlrd.open_workbook(r"D:\ls\cb\ss.xlsx") #打开我文件,后面接的是路径
s=data.sheet_by_index(0) #通过索引0表示第一个页
#print(s.row_values(0)) #通过索引获取单元格中的值,0表示第一行
#print(s.row_values(0,1,3)) #[‘性别’, ‘年龄’]

第一个0表示行数,第一行3第二个1表示列索引数1表示第2列,第三个数3表示结束列(不包含结束列)
print(s.row_values(3,1,3)) #[12.0, 20.0]
#print(s.col_values(0)) #获取列所有的数据
print(s.col_values(1,6,12))
#第一1表示索引是第2列,第二数6表示的是第7行,第三个数12表示是第13行,不包含13行
print(s.col_values(1,11,12)) #[20.0]
print(s.row_values(11,1,2)) #[20.0]
#获取表格中第一列所有的数据

for i in range(s.nrows):
print(s.row_values(i)[0]) #遍历

拓展sys

import sys
print(sys.path)#检索python下的包 Copyright (c) 1995-2001 Corporation for National Research Initiatives.
#All Rights Reserved.
print(sys.copyright) #版本信息 Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.
#All Rights Reserved.
print(sys.getfilesystemencoding()) #编码格式utf-8
print(sys.version) #获取python的版本信息 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)]
print(sys.platform) #win32 当前运行平台
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值