Python入门:对Excel数据处理的学习笔记【第四章】字符串类型处理技术
注:该学习笔记是根据曾志贤老师编写的《从Excel到Python,用Python轻松处理Excel数据》所学习整理的笔记。
第四章 字符串类型处理技术
目录
- 第四章 字符串类型处理技术
- 一、单、多字符切片
- 1、字符串切片
- 2、单字符切片
- 3、多字符切片
- 案例一、字符串切片根据身份证号判断性别
- 二、字符串统计
- 1、统计字符串长度
- 2、按条件统计字符串
- 案例一、字符串统计各等级出现的次数
- 三、字符串搜索
- 1、使用index函数搜索字符串位置
- 2、使用find函数搜索字符串位置
- 案例一、字符串搜索提取指定位置的信息
- 四、字符串替换
- 1、字符串替换方法
- 案例一、字符替换整理不规范的分隔符
- 五、字符串拆分和合并
- 1、拆分字符串为列表
- 2、合并列表为字符串
- 案例一、字符串拆分合并汇总多表中的不规范数据
一、单、多字符切片
1、字符串切片
字符串切片就是截取字符串。可以利用字符串的切片特性进行提取、拆分、合并等操作,但不能对字符串进行修改。
2、单字符切片
单字符切片是对字符串中指定位置的单个字符进行截取。
语法结构:字符串[索引位置],索引位置的序号是从0开始的。
txt='python基础的学习'
print(txt[0]) #正数,从左至右计算位数。 返回 p
print(txt[-1]) #负数,从右至左计算位数。 返回 习
3、多字符切片
语法结构:字符串[开始索引:结束索引:步长]
txt='python基础的学习'
print(txt[2:9]) #返回 thon基础的
print(txt[-10:-3]) #返回 ython基础
print(txt[:7]) #返回 python基
print(txt[:-5]) #返回 python
print(txt[7:]) #返回 础的学习
print(txt[-5:]) #返回 基础的学习
print(txt[2:-5]) #返回 thon
print(txt[-10:7]) #返回 ython基
print(txt[:]) #返回 python基础的学习
print(txt[::2]) #间隔一个字符获取 返回 pto基的习
print(txt[::-1]) #反转字符串 返回 习学的础基nohtyp
print(txt[::-2]) #反转字符串,间隔一个字符获取 返回 习的基otp
案例一、字符串切片根据身份证号判断性别
如图所示,在“员工信息”工作簿中的“信息”工作表,对B列身份证号码进行性别判断,18位身份证号,判断第17位数字;15位身份证号,判断第15位数字。如果数字是奇数,则性别为男性,反之为女性。将判断的结果写在C列,并另存。
import xlrd
from xlutils.copy import copy
wb=xlrd.open_workbook('员工信息.xls')
ws=wb.sheet_by_name('信息')
nwb=copy(wb)
nws=nwb.get_sheet('信息')
nws.write(0,2,'性别')
for num in range(1,ws.nrows):txt=ws.cell_value(num,1) #读取num行的身份证号sex_num=int(txt[14:17][-1]) #转换为整数型,然后截取15位至17位(左闭右开),然后提取最后1位。if sex_num % 2 ==1: #判断余数为单数还是双数sex='男'else:sex='女'nws.write(num,2,sex) #写入指定位置
nwb.save('员工信息-1.xls')
二、字符串统计
1、统计字符串长度
使用len函数,对字符串、列表、元组等对象的长度或者项目个数进行统计。
语法结构:
len(s)
参数说明:
- s:参数可以是序列,例如字符串、元组、列表、字典、集合等。
txt='python第四章的学习'
print(len(txt)) #对字符串的长度进行统计 返回 12
txt=[2,3,5,7,10]
print(len(txt)) #对列表的个数进行统计 返回 5
2、按条件统计字符串
使用count函数,对指定写字符串在父字符串中出现的次数进行统计。
语法结构:
count(sub[,start[,end]])
参数说明:
- sub:必选参数,搜索的子字符串。
- start :可选参数,字符串开始搜索的位置,默认从第0字符开始。
- end:可选参数,字符串结束搜索的位置,默认搜索到字符串的最后。
txt='python第四章python的学习python的字符串统计学习'
print(txt.count('py')) #在“txt”中寻找“py”出现的次数
print(txt.count('py',2)) #在“txt”中的第3位字符开始寻找“py”出现的次数
print(txt.count('py',2,20)) #在“txt”中的第3位至第21位间,寻找“py”出现的次数
案例一、字符串统计各等级出现的次数
将下“成绩”工作簿中的,“成绩”工作表中的数据,分别按照:优、良、中、差统计次数。并将数据写在C列。
import xlrd
from xlutils.copy import copy
wb=xlrd.open_workbook('成绩.xls')
ws=wb.sheet_by_name('成绩')
nwb=copy(wb)
nws=nwb.get_sheet('成绩')
for num in range(1,ws.nrows):ws_val=ws.cell_value(num,1)txt=''for num1 in '优良中差':i='{}:{}'.format(num1,ws_val.count(num1))txt +=inws.write(num,2,'{}'.format(txt))
nwb.save('成绩-1.xls')
三、字符串搜索
搜索子字符串在父字符串中第一次出现的位置,可以使用index函数或者find函数。
注意:index函数与find函数都是模糊匹配,并非精准匹配。
比如字符串:‘甲24,甲2’
查找’甲2’字符时,会返回’甲24’字符的位置,因为’甲24’字符包含了’甲2’字符。
1、使用index函数搜索字符串位置
index函数用于从字符串中找出子字符串第一个匹配项的索引位置,如果查找的字符串不存在,则返回错误提示。
语法结构:
index(sub[,start[,end]])
参数说明:
- sub:必选参数,搜索的子字符串。
- start :可选参数,字符串开始搜索的位置,默认从第0字符开始。
- end:可选参数,字符串结束搜索的位置,默认搜索到字符串的最后。
txt='甲0,乙3,丙6,丁9,甲12,乙16,丙20,丁24'
print(txt.index('丁')) #返回 9
print(txt.index('丁',10)) #返回 24
print(txt.index('丁',1,12)) #返回 9
print(txt.index('甲甲')) #程序报错,因父字符串中无“甲甲”字符
2、使用find函数搜索字符串位置
find函数与index函数的功能一样,唯一的区别就是find函数不会报错,如果未匹配上将会返回“-1”。
语法结构:
find(sub[,start[,end]])
参数说明:
- sub:必选参数,搜索的子字符串。
- start :可选参数,字符串开始搜索的位置,默认从第0字符开始。
- end:可选参数,字符串结束搜索的位置,默认搜索到字符串的最后。
txt='甲0,乙3,丙6,丁9,甲12,乙16,丙20,丁24'
print(txt.find('丁')) #返回 9
print(txt.find('丁',10)) #返回 24
print(txt.find('丁',1,12)) #返回 9
print(txt.find('甲甲')) #因为在父字符串中找到“甲甲”字符串,故返回 -1
案例一、字符串搜索提取指定位置的信息
在“信息表”工作簿中的“信息表”工作表中,将A列的部门信息提取到对应的B列中。
import xlrd
from xlutils.copy import copy
wb=xlrd.open_workbook('信息表.xls')
ws=wb.sheet_by_name('信息表')
nwb=copy(wb)
nws=nwb.get_sheet('信息表')
for num in range(1,ws.nrows):ws_val=ws.cell_value(num,0)i=ws_val.find('(') #获取截取字符串的开始位置j=ws_val.find(')') #后去截取字符串的结束位置txt=ws_val[i+1:j]nws.write(num,1,txt)
nwb.save('信息表-1.xls')
四、字符串替换
替换字符串的本质就是有条件的对字符串进行修改。替换后的字符串生成新的内存地址,并非替换原有字符串的内存地址。
1、字符串替换方法
replace函数用于把字符串中指定的旧字符串替换为指定的新字符串,默认全部替换。
语法结构:
replace(old,new[,count])
参数说明:
- old:必选参数,被替换的旧字符串。
- new:必选参数,新字符串,用于替换旧字符串。
- count:可选参数,替换的次数,默认替换所有出现的旧字符串。
txt='A组-优秀;B组-良好;C组-优秀;D组-优秀;E组-一般'
print(txt.replace('优秀','晋级',0)) #将不进行替换
print(txt.replace('优秀','晋级')) #将所有 优秀 替换为 晋级
print(txt.replace('优秀','晋级',1)) #将第一个 优秀 替换为 晋级
print(txt.replace('优秀','晋级',2)) #将前两个 优秀 替换为 晋级
案例一、字符替换整理不规范的分隔符
将“员工表”工作簿中的“员工表”工作表里的B列名单进行处理,将每个姓名之间的分隔符统一成“-”。并将整理后的写在C列。
import xlrd
from xlutils.copy import copy
wb=xlrd.open_workbook('员工表.xls')
ws=wb.sheet_by_name('员工表')
nwb=copy(wb)
nws=nwb.get_sheet('员工表')
for num in range(1,ws.nrows):txt=ws.cell_value(num,1) #提取需要替换的字符串for i in '、\|': #将需要替换的符号进行循环txt=txt.replace(i,'-') #将提取的字符串,替换后,在赋值给自己。nws.write(num,2,txt)
nwb.save('员工表-1.xls')
五、字符串拆分和合并
1、拆分字符串为列表
split函数用于拆分字符串,可以指定分隔符对字符串进行切片,并返回拆分后的字符串列表。
语法结构:
split([sep][,maxsplit])
参数说明:
- sep:可选参数,表示分隔符,默认为空格(’ ‘),但不能为空(’')。分隔符可以是单个字符,也可以是多个字符。如果是多个字符,则被看作为一个整体。
- maxsplit:可选参数,表示要执行的最大拆解分数。-1为默认值,表示无限制。
txt='10 20 50'
txt1='7|9|10'
print(txt.split()) #默认以空格进行拆分 返回 ['10', '20', '50']
print(txt1.split('|')) #按照指定字符进行拆分 返回 ['7', '9', '10']
print(txt1.split('|',1)) #按照指定字符,指定拆分次数进行拆分 返回 ['7', '9|10']
2、合并列表为字符串
使用join函数进行合并
语法结构:
join(iterable)
参数说明:
- iterable:必选参数,可以是列表、元组等可迭代的对象(可循环的对象),但其中的值只能为字符串,不能是其他数据类型。
txt=['甲','18','财务部'] #列表
print('-'.join(txt)) #以“-”作为分隔符,将列表合并为字符串 返回 甲-18-财务部
txt1={'甲','18','财务部'} #集合
print('-'.join(txt1)) #以“-”作为分隔符,将集合合并为字符串 返回 甲-18-财务部
txt2=('甲','18','财务部') #元组
print('-'.join(txt2)) #以“-”作为分隔符,将元组合并为字符串 返回 甲-18-财务部
案例一、字符串拆分合并汇总多表中的不规范数据
将“业绩”工作簿中的,“1季度”、“2季度”、“3季度”、“4季度”工作表汇总到一个新工作表中。
import xlrd
from xlutils.copy import copy
wb=xlrd.open_workbook('业绩.xls')
ws_s=wb.sheets() #所有工作表
nwb=copy(wb)
nws=nwb.add_sheet('统计结果')
nws.write(0,0,'季度')
nws.write(0,1,'统计结果')
num,nums,lst=0,0,[]
for ws in ws_s: #循环所有工作表num +=1 #该变量作为统计结果工作表的行号for row_num in range(1,ws.nrows): #循环工作表的所有行name=ws.cell_value(row_num,0) #读取A列ws_val=ws.cell_value(row_num,1) #读取B列for i in ws_val.split('、'): #将B列拆分成列表并进行循环nums +=int(i) #将拆分的列表类型转换为int,在进行累加lst +=[name+':'+str(nums)] #将A类名字与累加好的数值按照列表的形式进行组合,并进行累加。nums=0 #将累加清空nws.write(num,0,ws.name) #给统计结果工作表的A列输出值nws.write(num,1,'\n'.join(lst)) #将lst列表进行组合,给统计结果工作表的B列输出值lst=[] #将列表清空
nwb.save('业绩-1.xls')
Python入门:对Excel数据处理的学习笔记【第四章】字符串类型处理技术相关推荐
- 《Go语言圣经》学习笔记 第四章 复合数据类型
<Go语言圣经>学习笔记 第四章 复合数据类型 目录 数组 Slice Map 结构体 JSON 文本和HTML模板 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. ...
- 计算机网络(第7版)谢希仁著 学习笔记 第四章网络层
计算机网络(第7版)谢希仁著 学习笔记 第四章网络层 第四章 网络层 4.3划分子网和构造超网 p134 4.3.1划分子网 4.3.2使用子网时分组的转发 4.3.3无分类编址CIDR(构建超网) ...
- Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25
Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25 目录 Rule20 接口优于抽象类 Rule21 为后代设计接口 Rule22 接口只用于定义类型 ...
- 机器人导论(第四版)学习笔记——第四章
机器人导论(第四版)学习笔记--第四章 4.1 引言 4.2 解的存在性 4.3 当n<6时操作臂子空间的描述 4.4 代数解法和几何解法 4.5 简化成多项式的代数解法 4.6 三轴相交的Pi ...
- Python入门:对Excel数据处理的学习笔记【第五章】列表类型处理技术
注:该学习笔记是根据曾志贤老师编写的<从Excel到Python,用Python轻松处理Excel数据>所学习整理的笔记. 第五章 列表类型处理技术 列表是Python中最基础的数据结构. ...
- 线性代数学习笔记——第四章学习指南——n维向量空间
一.学习内容及要求 1. 内容: §4.1. n维向量空间的概念 线性代数学习笔记--第四十讲--n维向量空间的概念 线性代数学习笔记--第四十一讲--n维向量空间的子空间 §4.2. 向量组的线性相 ...
- Python入门:对Excel数据处理的学习笔记【第十一章】openpyxl库的使用
注:该学习笔记是根据曾志贤老师编写的<从Excel到Python,用Python轻松处理Excel数据>所学习整理的笔记. 第11章 openpyxl库的使用 目录 第11章 openpy ...
- 趣学python教孩子学编程_《趣学Python——教孩子学编程》学习笔记第1-3章
第1章 Python不是大蟒蛇 1.1 关于计算机语言 计算机程序是一组让计算机执行某种动作的指令.软件就是计算机程序的集合. 一种编程语言就是一种特定的与计算机交谈的方式,这种方式使用计算机和人都能 ...
- python实验题第四章_「Python」2020.03.16学习笔记 | 第四章列表、元组、字典-习题(11-13)...
学习测试开发的Day74,真棒! 学习时间为1H 第四章列表.元组.字典-习题(11-13) 11.求两个集合的交集和并集 代码 list1=[1,2,3,4] list2=[2,3,5,5] def ...
最新文章
- linux目录加了一把锁怎么办,linux 文件加锁 lockf 小结
- android如何实现开机自动启动Service或app
- Map Join介绍及案例
- 序列密码体制——密码学笔记(三)
- 【备忘录】Product cost collectors – 成本收集器
- Zookeeper3.4.11+Hadoop2.7.6+Hbase2.0.0搭建分布式集群
- 推荐搜索炼丹笔记:向量召回 MIND多兴趣双塔模型
- 九江机器人餐厅_机器人精通200道佳肴 九江学院来了多位机器厨神
- android imageview 上蒙版,在iOS中为UIImageView的圆形蒙版设置动画
- linux重置密码的方法和用户切换
- 百度地图Polyline 清除
- 求n的阶乘java_Java 求n的阶乘
- Selenium ide及webDriver使用
- 《R语言初学指南》一1.2 向量
- 计算机文件自动备份到移动硬盘,1个让移动硬盘自动备份的简单方法!
- [二进制学习笔记]LibcSearcher报错no matched libc
- 【剑桥摄影协会】色彩管理之概述
- 关于文件命名和整理的小技巧
- dell计算机在桌面不显示,你好,在吗?我的戴尔笔记本电脑桌面图标不显示为什么?...
- 统计学学习日记:L6-离散趋势分析之总体方差和标准差