Python实例|依据指定字符或者不同字符将Excel表格一列拆分为多列(附源码+限免视频)
利用Python开发微软的Excel凡是需要利用第三方库,如xlrd、xlwt、xlutils、xlwings、win32com、openpyxl、pandas等,各类第三方库都有本身特殊的功用和缺陷,因而在摘用那些第三方库之前需要慎重考虑。
如:xlrd只能读取在Excel文件中的数据;xlwt只能在Excel文件中写进数据;xlutils固然能够读写Excel文件的数据,但是它依靠于xlrd和xlwt;xlwings能够从Excel中挪用Python,也可在Python中挪用Excel;win32com能够独立读写Excel文件的数据;openpyxl也能够独立读写Excel文件的数据;pandas可以读写在Excel文件中的数据,但是它需要xlrd/xlwt/openpyxl/xlsxwriter等库的共同。
下面介绍两个Python辅助Excel实例,别离是根据指定字符将一列拆分为多列,和根据差别字符将一列拆分为多列。
实例:根据指定字符将一列拆分为多列
01
实例功用
此案例次要通过在while轮回中屡次利用Python语言的字符串的partition办法,从而实如今工做表中将包罗多个指定字符('-')的一列拆分为多列。当运行此案例的Python代码(A325.py文件)之后,将把“员工表.xlsx”文件的员工表的姓名列拆分为分公司列、部分列、组名列、姓名列,代码运行前后的效果别离如图1和图2所示。
■ 图1
■ 图2
02
实现代码
import openpyxl
myBook=openpyxl.load_workbook( '员工表.xlsx',data_only= True)
mySheet=myBook.active
#按行获取员工表(mySheet)的单位格数据(myValues)
myValues= list(mySheet.values)
myNewBook=openpyxl.Workbook
myNewSheet=myNewBook.active
myNewSheet.title= '员工表'
myNewSheet.append([ '工号', '分公司', '部分', '组名',
'姓名', '更高学历', '专业', '出生年份'])
#从myValues的第2行起头逐行轮回(到最初一行)
formyRow in myValues[ 1:]:
myList=[]
#拼接行(myRow)的第1列单位格的数据
myList+=[myRow[ 0]]
#获取行(myRow)的第2列单位格的数据(即将要拆分的字符串)
myStr=myRow[ 1]
#统计字符'-'的个数
myMax=myStr.count( '-')
myCount= 1
#有几个指定字符('-')就轮回几次
whilemyCount=myMax:
#根据指定字符('-')将字符串(myStr)拆分为三个成员
myParts= list(myStr.partition( '-'))
#在列表(myList)中添加第一个成员
myList+=[myParts[ 0]]
#将包罗多个指定字符的第三个成员myParts[2]赋值给myStr,
#以停止下次轮回(即再次拆分)
myStr=myParts[ 2]
#假设是最初一次轮回
ifmyCount==myMax:
#则在列表(myList)中添加第三个成员myParts[2]
myList+=[myParts[ 2]]
#累计轮回次数
myCount+= 1
#拼接行(myRow)的第3列及后面的所有单位格数据
myList+=myRow[ 2:]
myNewSheet.append(myList)
myNewBook.save( '成果表-员工表.xlsx')
03
代码阐明
在上面那段代码中,while轮回用于根据指定字符('-')利用partition办法拆分字符串,例如,字符串“北京分公司-投资部-2组-李松林”包罗3个指定字符('-'),因而要轮回3次,下面是每次的拆分成果:
此案例的源文件是MyCode\A325\A325.py。
扫码看看讲解视频
实例:根据差别字符将一列拆分为多列
01
实例功用
此案例次要通过利用Python语言的字符串的find办法,从而实如今工做表中根据指定的差别字符(如'年'、'月'、'日'等)将一列的数据(如'1989年2月18日')拆分到多(三)列中。当运行此案例的Python代码(A320.py文件)之后,将把“员工表.xlsx”文件的员工表的出生日期列拆分为出生年份列、出生月份列、出生日列,代码运行前后的效果别离如图3和图4所示。
■ 图3
■ 图4
02
实现代码
import openpyxl
myBook=openpyxl.load_workbook( '员工表.xlsx',data_only=True)
mySheet=myBook.active
#按行获取员工表(mySheet)的单位格数据(myValues)
myValues=list(mySheet.values)
myNewBook=openpyxl.Workbook
myNewSheet=myNewBook.active
myNewSheet.title= '员工表'
myNewSheet.append([ '工号', '部分', '姓名', '更高学历',
'专业', '出生年份', '出生月份', '出生日'])
#从myValues的第2行起头逐行轮回(到最初一行)
formyRow inmyValues[ 1:]:
myList=[]
#拼接行(myRow)的第1列到第5列之间的单位格数据
myList+=myRow[ 0:5]
#获取行(myRow)的第6列(出生日期列)的单位格数据
myDate=myRow[ 5]
#查询字符'年'在出生日期字符串(如‘1989年2月18日’)的位置(索引)
myYearPos=myDate.find( '年')
#获取年份字符串(如‘1989年’)
myYear=myDate[ 0:myYearPos+1]
#查询字符'月'在出生日期字符串的位置(索引)
myMonthPos=myDate.find( '月')
#获取月份字符串(如‘2月’)
myMonth=myDate[myYearPos+ 1:myMonthPos+1]
#获取出生日字符串(如‘18日’)
myDay=myDate[myMonthPos+ 1:]
#在列表(myList)中添加年份、月份、出生日
myList+=[myYear,myMonth,myDay]
myNewSheet.append(myList)
myNewBook.save( '成果表-员工表.xlsx')
03
代码阐明
在上面那段代码中,myYearPos=myDate.find('年')表达查找字符‘年’在字符串myDate (如'1989年2月18日')的索引位置。myYear=myDate[0:myYearPos+1]表达根据索引位置在字符串myDate中获取子字符串myYear,0表达子字符串的起始位置,myYearPos表达子字符串的完毕位置,如'1989年'。
此案例的源文件是MyCode\A320\A320.py。
04
填补阐明
阅读和利用本书案例要求读者具备必然的Python语言编程根底和操做Excel的根本常识,关于Python语法根底能够参考 Python 根底语法教程()。
扫码看看讲解视频
05
源代码下载
存眷微信公家号,后台回复关键词 “Python辅助ExcelV081” 即可获得完全源代码。
06
参考册本
《Python辅助Word+Excel:让办公更高效》
做者:罗帅、罗斌
订价:99.8元
扫码优惠购书
347个典型办公场景
问题描述+处理计划+实在源码+效果截图
Python+Word+Excel实现办公主动化,
成倍进步办公效率
优化数据阐发,让工做省点力!
告别反复劳动,蜕变职场精英!