Python实例|依据指定字符或者不同字符将Excel表格一列拆分为多列(附源码+限免视频)

1周前 (11-15 02:19)阅读1回复0
yk
yk
  • 管理员
  • 注册排名3
  • 经验值67585
  • 级别管理员
  • 主题13517
  • 回复0
楼主

利用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实现办公主动化,

成倍进步办公效率

优化数据阐发,让工做省点力!

告别反复劳动,蜕变职场精英!

0
回帖

Python实例|依据指定字符或者不同字符将Excel表格一列拆分为多列(附源码+限免视频) 期待您的回复!

取消