注:该学习笔记是根据曾志贤老师编写的《从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数据处理的学习笔记【第四章】字符串类型处理技术相关推荐

  1. 《Go语言圣经》学习笔记 第四章 复合数据类型

    <Go语言圣经>学习笔记 第四章 复合数据类型 目录 数组 Slice Map 结构体 JSON 文本和HTML模板 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. ...

  2. 计算机网络(第7版)谢希仁著 学习笔记 第四章网络层

    计算机网络(第7版)谢希仁著 学习笔记 第四章网络层 第四章 网络层 4.3划分子网和构造超网 p134 4.3.1划分子网 4.3.2使用子网时分组的转发 4.3.3无分类编址CIDR(构建超网) ...

  3. Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25

    Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25 目录 Rule20 接口优于抽象类 Rule21 为后代设计接口 Rule22 接口只用于定义类型 ...

  4. 机器人导论(第四版)学习笔记——第四章

    机器人导论(第四版)学习笔记--第四章 4.1 引言 4.2 解的存在性 4.3 当n<6时操作臂子空间的描述 4.4 代数解法和几何解法 4.5 简化成多项式的代数解法 4.6 三轴相交的Pi ...

  5. Python入门:对Excel数据处理的学习笔记【第五章】列表类型处理技术

    注:该学习笔记是根据曾志贤老师编写的<从Excel到Python,用Python轻松处理Excel数据>所学习整理的笔记. 第五章 列表类型处理技术 列表是Python中最基础的数据结构. ...

  6. 线性代数学习笔记——第四章学习指南——n维向量空间

    一.学习内容及要求 1. 内容: §4.1. n维向量空间的概念 线性代数学习笔记--第四十讲--n维向量空间的概念 线性代数学习笔记--第四十一讲--n维向量空间的子空间 §4.2. 向量组的线性相 ...

  7. Python入门:对Excel数据处理的学习笔记【第十一章】openpyxl库的使用

    注:该学习笔记是根据曾志贤老师编写的<从Excel到Python,用Python轻松处理Excel数据>所学习整理的笔记. 第11章 openpyxl库的使用 目录 第11章 openpy ...

  8. 趣学python教孩子学编程_《趣学Python——教孩子学编程》学习笔记第1-3章

    第1章 Python不是大蟒蛇 1.1 关于计算机语言 计算机程序是一组让计算机执行某种动作的指令.软件就是计算机程序的集合. 一种编程语言就是一种特定的与计算机交谈的方式,这种方式使用计算机和人都能 ...

  9. python实验题第四章_「Python」2020.03.16学习笔记 | 第四章列表、元组、字典-习题(11-13)...

    学习测试开发的Day74,真棒! 学习时间为1H 第四章列表.元组.字典-习题(11-13) 11.求两个集合的交集和并集 代码 list1=[1,2,3,4] list2=[2,3,5,5] def ...

最新文章

  1. linux目录加了一把锁怎么办,linux 文件加锁 lockf 小结
  2. android如何实现开机自动启动Service或app
  3. Map Join介绍及案例
  4. 序列密码体制——密码学笔记(三)
  5. 【备忘录】Product cost collectors – 成本收集器
  6. Zookeeper3.4.11+Hadoop2.7.6+Hbase2.0.0搭建分布式集群
  7. 推荐搜索炼丹笔记:向量召回 MIND多兴趣双塔模型
  8. 九江机器人餐厅_机器人精通200道佳肴 九江学院来了多位机器厨神
  9. android imageview 上蒙版,在iOS中为UIImageView的圆形蒙版设置动画
  10. linux重置密码的方法和用户切换
  11. 百度地图Polyline 清除
  12. 求n的阶乘java_Java 求n的阶乘
  13. Selenium ide及webDriver使用
  14. 《R语言初学指南》一1.2 向量
  15. 计算机文件自动备份到移动硬盘,1个让移动硬盘自动备份的简单方法!
  16. [二进制学习笔记]LibcSearcher报错no matched libc
  17. 【剑桥摄影协会】色彩管理之概述
  18. 关于文件命名和整理的小技巧
  19. dell计算机在桌面不显示,你好,在吗?我的戴尔笔记本电脑桌面图标不显示为什么?...
  20. 统计学学习日记:L6-离散趋势分析之总体方差和标准差

热门文章

  1. 【BZOJ4548】小奇的糖果
  2. android canvas画图gc,自定义控件绘图(Canvas,Paint,Region等)篇一
  3. 虚拟主机服务器架设,云虚拟主机架设服务器
  4. 使用SQL语句创建数据库和数据库表
  5. 软件造价评估最新模板免费下载(基于2022年度行业基准数据)
  6. Java多线程学习(吐血超详细总结)【转】
  7. 纯电动汽车整车控制器测试系统ETest综述
  8. 洛谷 魔法少女 python
  9. 用了这么久的消息队列,你知道为什么需要它吗?
  10. 【html】svg标签