SOFTWARE DEVELOPMENT&APPLICATION
Python读取Word表格数据及批量处理的方法
闫海忠打闫远2
(1.云南大学生态学与地植物学研究所,昆明650504;  2.云南省文化和旅游厅,昆明650200)
摘要:Python目前最新版本为3.9.1,由荷兰人Guido van Rossum于1989年发明,如今在编程和行业应用中几乎无人不知,在大数据和人工智能方面的应用和优势日渐明显。属于面向对象、任务的直译式计算机程序设计语言。主要优势表现3个方面:(1)语言生态。在编程过程和环境中可以使用多种外部编程资源,到目前为止Python语言能够提供20余万个第三方库和开源代码,几乎覆盖IT行业的多个计算领域。(2)简单易用。Python从一开始在语句明了,语法简洁而具有完整的语法逻辑,可以进行语句级、面向任务和面向过程的程序开发。(3)高效。Python能够编写出直接面对任务的代码,而且效率极高,同样功能的计算任务,Python能够用较少的代码行,完成复杂程序功能。通过一个操作磁盘文件的过程,介绍其在Word相关信息提取和处理的方法。
关键词:Python语言;Word表格数据;编程框架
1任务和数据源
填写和处理表格是个常见的任务,没有程序之前大都是手工方法,但批量的表格及数据处理人工方式就显得工作量特别大和低效率。
因为Python丰富的第三方库内容,通过调用其Word文件库可以直接读取Office Word文件内容,用程序方法来统计分析并处理成报表。Office Word文件目前有两种主要类型,即:.DOX和DOCX两种版本格式,也在一下的方法通过程序进行了转换,当程序遇到老版的Word文件(.DOC)会将其转换成较高版本的Word 文件(.DOCX)后再进行读取和处理,体现了程序方法的功能特点和灵活性。
2Python读取和处理的表格的方法
实现读取Word表格数据的关键是在程序中导入第三方控件Win32com和Docx两个关键模块。然后分析数据源文件的表格特征,分别读取各所需单元的数据并加以处理统计,最后结果导入到一个更为简便的格式文件中,全部的Python程序如下所列。实验调试和运行通过在Python3.9.1IDE和VS环境下。其特点是处理和统计速度快,能够把同一目录的所有Word表格数据文件遍列处理,方便了许多。
Python_Word.Py:
# !/usr/bin/env python
# coding:utf-8
# author:yanshan
# www.jb51/article/70318.htm #blog.csdn/geoker/article/details/80149463? from=timeline
import os#导入os模块
import win32com#导入win32com模块
from win32com.client import Dispatch,constants from docx import Document#从docx导入Document #模块
import re#导入#re模块
with open('result.csv:'w‘)as f:#创建统计结果文件
f.write('党支部年度月份党员姓名基础分1'+:'+'基础分2'+:'+'基础分3'+:'+'基础分4'+','+'基础分5'
+','+'基础分6'+','+'基础分7'+','+'基础分8'+','+'基础分9'+','+'讲道德有品行1'+','+'讲道德有品行2'+ ','+'讲道德有品行3'
+','+'讲奉献有作为1'+','+'讲奉献有作为2'+','+'讲奉献有作为3'+','+'讲奉献有作为4'+','+'讲奉献有作为5'+','+'讲奉献有作为6'
+','+'加分'+','+'—票否决'+','+'总计’+、n')
print('开始工作...')
def parse_doc(f):
"""读取doc,转换为docx
doc=w.Documents.Open(FileName=f)
wd()
n=os.path.basename(f)#获取doc文件名
docN=re.findall(r'(.+?)\.',str(n))
for docName in docN:
#print(PATH)
实用第一f智慧密集
if docName[0]!='~':#word临时文件不转换
doc.SaveAs(PATH+弋'+docName+'.docx', 12,False,True,False,False,False,False)#转化#后路径下的文件
doc.Close()
def parse_docx(f):
"""打开读取docx,返回党员姓名和年度
d=Document(f)
for para in d.paragraphs:
#text=repile('w+\s+\w+')
zb=re.findall('党支部:(.*?)年度::)
yr=re.findall('年度:(.*?)月份::)
mt=re.findall('月份:(.*?)党员姓名:',)
xm=re.findall('党员姓名:(.*?):)
for z in zb:
zz=z
for y in yr:
yy=y
for m in mt:
mm=m
for x in xm:
xx=x
t=d.tables[0]
#ll(0,4).text
ll(1,4).text#读取表格单元数据
ll(2,4).text
ll(3,4).text
ll(4,4).text
ll(5,4).text
ll(6,4).text
ll(7,4).text
ll(8,4).text
throw关键字
ll(9,4).text
ll(10,4).text
ll(11,4).text
ll(12,4).text
ll(13,4).text
ll(14,4).text
网页出现横向滚动条ll(15,4).text
ll(16,4).text
ll(17,4).text
ll(18,4).text
ll(19,4).text
ll(20,4).text
ll(21,4).text
with open('result.csv','a')as f:#写入结果数据文件
f.write(zz+','+yy+','+mm+','+xx+','+df1+','+df2+', '+df3+','+df4+','+df5+','+df6+','+df7+','+df8+','+ df9+','
+df10+','+df11+','+df12+','+df13+','+df14+','+ df15+','+df16+','+df17+','+df18+','+df19+','+df20+', '+df+'\n')
if_name_=="_main_":#主模块获取程序所在目录的#所有Word文件
w=win32com.client.Dispatch('Word.Application')
#遍历文件
wdO#获取当前Word文件所在的#当前win路径
doc_files=os.listdir(WPATH)
for doc in doc_files:
if os.path.splitext(doc)[1]=='.doc':
try:
parse_doc(WPATH+'\\'+doc)
except Exception as e:
print(e)
#wd()#获取当前Word文件所在#的当前win路径
doc_files=os.listdir(WPATH)
for doc in doc_files:
if os.path.splitext(doc)[1]=='.docx':
try:
parse_docx(WPATH+'\\'+doc)
except Exception as e:
print(e)
print('结果已存入:result.csv文件中…')
print('')inputstream readline
i=input('马上打开杳看?y or Y')#提示是否打开杳看#结果
if i=='y'or i=='Y':
if os.path.isfile('result.csv'):
os.startfile('result.csv')
3Python使用技巧
3.1代码编辑器
Python自带的代码编译(IDLE)器体验一般,大量代码和调试起来不十分方便袁好在市面上有多个与Python各个版本兼容性良好的Python开发编辑器袁例如:PyCharm:这是一个专门用于Python开发的IDE,常见的代码补全、智能提示、语法检查,这个软件都支持袁可以快速创建Django,Flask等Python Web框架,使用起来非常不错
Sublime Text:这是一个轻量级的代码编辑器,跨平台,支持几十种编程语言,包括Python,Java,C/C++等,小巧灵活,运行轻快,支持代码高亮、自动补全、语法提示,插件扩展丰富,是一个很不错的代码编辑器。
VS Code:Visual Studio Code这是微软开发的一个跨平台的代码编辑器,界面华丽,支持常见的编程语言 开发,插件拓展丰富,不仅智能补全、语法检查、代码高亮,还支持git功能,运行流畅,安装相
关插件后,可直接运行Python程序。
Atom:这是github专门为程序员开发的一个代码编辑器,也是款平台的,界面简洁直观,使用起来非常方便,自动补全、代码高亮、语法提示,启动运行速度较快,对于初学者来说,是一个很不错选择。
3.2Python网络编程框架
Python Web主流框架有Flask、Django、Tornado等。
Flask:Flask为轻量级Web应用框架,是基于Werkzeug WSGI工具箱和Jinja2模板引擎,使用Python 就能快速搭建自己的网络应用程序,如企业网站或个人博客内容。
Django:Django是以Python编写的高级,MVC风格的开源库。Django也被称为"完美主义者的最后框架”。它最初是为新闻网站设计的,并且允许开发人员编写数据库驱动Web应用程序。它算是一个全能型框架。它内置了很多模块,能快速解决大量Web难,痛点问题。
Tornado:Tornado是传说中性能高的框架。它支持异步处理的功能,这是它的优势。因为其他框架不具备该功能。但Tornado也有致命缺点,那就是扩展库资源比较少。个人认为Tornado简单易用,上手快。
3.3Python程序发布与打包
Python可以说是一个描述行的脚本语言,不需要编译即能被解释器解释执行。它的发布两种主要方式:
(1).py文件:有的时候,可直接提供源码供用户使用,因为对于开源项目或者源码没那么重要的,只需要使用者自行安装Python安装依赖的各种库。
(2).pyc文件:pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库。通过使用pyc文件发布应用,可以在一定程度上保证某些机密和算法。
另外,还可利用第三方工具将.py生成一个可执行文件,这对于需要单独运行程序的用户而言,是最简 单的方式。如利用Pyinstaller工具来打包成为一个exe 文件,但要注意的是该可执行文件体积较大,执行速 度也会慢些。
(1)Pyinstaller安装方法:在Python命令行中,键入如下命令:
pip install pyinstaller
(2)PyInstaller的使用:在Python命令行中,键入如下命令:
pyinstaller[options]script[script噎]|specfile
其中[options]包括多个选项,各参数意义和用法如下:
-F表示生成单独的可执行文件;
-D-onedir创建一个新的磁盘目录存储exe文件(默认选项)。
-w表示去掉控制台窗口,这在需要GUI界面时有用。
-c-console,-nowindowed使用控制台,无界面(默认)。
-p表示自定义需要加载的类路径,使用情况不多。
-i表示生成的可执行文件的图标文件。
例如要编译Python_word.py,其实最简单的用法,在和Python_word..py源代码同目录下执行命令:
pyinstaller-F Python_word..py
这个命令成功了,会在当前目录下新增加了两个子目录:build和dist,dist所生成的可执行文件就在其中,dist目录下包括有执行过程中所需的多个动态库文件等。
4结语
在国内的流行度已经直逼Java,逐渐在众多的行业应用中流行起来,全球知名的编程语言流行度排行榜TIOBE的统计显示:Python曾成为2018年度编程语言。
Python作为一门高级编程语言,它的诞生虽然很偶然,但是它得到程序员的喜爱却是必然之路。Python初学者甚多,但要继续深入下去,有几个概念需要进一步理解:
与C语言不同,C语言编译完就是机器码,机器码可以直接在处理器上执行。CPU可以直接读取机器码,而Python是解释性脚本语言。Python脚本在执行中,其
实用第一f智慧密集
解释器会把代码内容读到内存里,通过Python解释器翻译成字节码。而CPU不能直接读取字节码,需要把字节码转换成机器码。所以Python对于C来说,就多了一个字节码转换成机器码的过程,所以相
对会慢。但是人为是无法感知的。另外Python的图形界面相对弱弱势,在桌面应用和分层数据库应用等方面还需要补足其短板。Word表格数据处理方法仅是个初步尝试。
参考文献
range在python中的用法[1]嵩天,礼欣,黄天羽.Python—言程序设计基础
[M].2版.北京:高等教育出版社,2017.
[2]张莉,金莹,张洁.多样化可扩展的Python教学体
系探索与实践[J].计算机教育,2017,(8):18-22.
⑶张茗芳.动态语言Python探讨与比较[J].企业科
技与发展,2012,(13):57-60.
[4]沈殊璇,薄亚明.适合于科学计算的脚本语言
Python[J].微计算机应用,2002,(5):289-291.
[5]狄博,王晓丹.基于Python语言的面向对象程序设
计课程教学[J].计算机工程与科学,2014,(A1): 122-125.[6]黄宏博.以Python语言作为咼校程序设计课程主语
言的探讨[J].教育艺术,2015:283.
[7]闫海忠.图解手机定位信息转换为点、线和面的技
术与方法[J].电脑编程与维护技巧,2019,2: 65-67.
[8]闫海忠.数据库全文检索引擎的设计与实现[J].
电脑编程与维护技巧,2018,2:105-109,142. [9]闫海忠,Aleksey Babchenko.用Morfik Fx编写适合
于多种设备平台的应用实例[J].电脑编程与维护技巧,2017,3:31-34.
[10]闫海忠.用Ozi制作自己的导航地图和实现追踪技
术[J].电脑编程与维护技巧,2016,19:77-79.
[11]闫海忠.一种深度备份应用程序和数据的方法[J].
python在线编辑器python3
电脑编程与维护技巧,2016,18:56-58,68. [12]Wing J M.Computational thinking[J].Communica­
tions of the ACM,2006,49(3):33.35.
[13]Masters K.A brief guide to understanding MOOCs[J].
The Internet Journal of Medical Education,2011,
(2):  1.
亠址冬仝企仝企仝企亠仏亠3亠期亠臬亠臬亠央亠処亠処亠址企仝企仝企亠3亠血亠臬亠期亠臬亠臬亠4*
(上接第37页)
中国大学慕课网app保世界范围内的兼容性。除了具有无线和超低功耗特性,STM32WL微控制器还包含嵌入式安全硬件功能,如128/256位AES硬件加密、PCROP读写保护、采用椭圆曲线加密引擎的公钥加密。
可以说,STM32WL单片机是一款专为物联网设计的芯片。
3.2.2液位继电器
监测部分可以使用液位继电器来实现。液位继电器是继电器的一种,同样属于电控制设备。液位继电
器通常分为3个端子,其工作原理是利用液体的导电性,在水位发生变化时,不同的端子没于水中的状态不同,从而导电性不同,进而导致继电器电路中三极管的导通或截至状态发生变化,产生不同的高低电平信号。
使用液位继电器是一种间接的水位监测方法,作为一种接触式设备,通过在水塔的不同高度安装液位继电器开关,在水位变化时触发不同的电信号,从而可以计算出相应的水位数值。液位继电器具备价格低廉、耐用等诸多优点,并且对于各种系统都具备良好的兼容性不 会引起冲突,对于系统的改造、维护、扩展有利。而且继电器开关也可以配合很多外围设备。
液位继电器的制造技术比较成熟,在使用时依据具体情况选择相应的型号即可。
4结语
对于水位控制系统的研究与设计应该与时俱进,对水位控制系统的发展加以总结,提出了一套由4个部分组成的统一系统模型,这4个部分分别是:核心控制部分、通信部分、监测部分、其他外围接口。此模型基本适用各种水位控制系统的设计,具备很强的指导意义。又面向物联网时代,选择STM32WL单片机作为控制核心对统一的水位控制模型加以实现,可以被其他的类似系统设计参考并借鉴。
参考文献
[1]范陈清,张杰,王际朝,万勇,孟俊敏.基于雷达
水位计的海浪波高信息提取算法及其精度评价[J].
海洋科学,2014,38(06):47-51.
[2]金波,秦燕飞.物联网产业发展及对策[J].宏观
经济管理,2014,(10):68-69+72.
[3]崔振辉,李华宇.物联网发展现状研究[J].通信
技术,2014,47(08):
841-846.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。