大数据的Python基础课件第9章文件与文件夹操作.pptx

上传人:小飞机 文档编号:1748801 上传时间:2022-12-17 格式:PPTX 页数:59 大小:351.01KB
返回 下载 相关 举报
大数据的Python基础课件第9章文件与文件夹操作.pptx_第1页
第1页 / 共59页
大数据的Python基础课件第9章文件与文件夹操作.pptx_第2页
第2页 / 共59页
大数据的Python基础课件第9章文件与文件夹操作.pptx_第3页
第3页 / 共59页
大数据的Python基础课件第9章文件与文件夹操作.pptx_第4页
第4页 / 共59页
大数据的Python基础课件第9章文件与文件夹操作.pptx_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《大数据的Python基础课件第9章文件与文件夹操作.pptx》由会员分享,可在线阅读,更多相关《大数据的Python基础课件第9章文件与文件夹操作.pptx(59页珍藏版)》请在三一办公上搜索。

1、第9章 文件与文件夹操作,1,本章学习目标,理解文本文件和二进制文件的概念熟练掌握内置函数open()的用法理解不同打开模式的区别熟练掌握文件对象的方法熟练掌握关键字with的用法了解json模块读写JSON格式文件的用法了解csv模块读写CSV格式文件的用法理解pickle和struct模块读写二进制文件的原理熟练掌握os和os.path模块对文件和文件夹操作的函数了解shutil模块对文件和文件夹操作的函数熟练掌握扩展库python-docx对Word文件的操作熟练掌握扩展库openpyxl对Excel文件的操作,2,9.1 文件的概念及分类,(1)文本文件文本文件可以使用记事本、gedi

2、t、ultraedit等字处理软件直接进行显示和编辑,并且人类能够直接阅读和理解。文本文件由若干文本行组成,包含英文字母、汉字、数字字符串、标点符号等。扩展名为txt、log、ini、c、cpp、py、pyw、html、js、css的文件都属于文本文件。(2)二进制文件数据库文件、图像文件、可执行文件、动态链接库文件、音频文件、视频文件、Office文档等均属于二进制文件。二进制文件无法用记事本或其他普通字处理软件正常进行编辑,人类也无法直接阅读和理解,需要使用正确的软件进行解码或反序列化之后才能正确地读取、显示、修改或执行。,3,9.2 文件操作基本知识,操作文件内容一般需要三步:首先打开文

3、件并创建文件对象,然后通过该文件对象对文件内容进行读取、写入、删除、修改等操作,最后关闭并保存文件内容。,4,9.2.1 内置函数open(),open(file, mode=r, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)参数file指定要操作的文件名称,如果该文件不在当前目录中,建议使用绝对路径,确保从当前工作文件夹出发可以访问到该文件。为了减少路径中分隔符“”符号的输入,可以使用原始字符串。参数mode(取值范围见表9-1)指定打开文件后的处理方式,例如“只读”、“只

4、写”、“读写”、“追加”、“二进制读”、“二进制写”等等,默认为“文本只读模式”。参数encoding指定对文本进行编码和解码的方式,只适用于文本模式,可以使用Python支持的任何格式,如GBK、UTF-8、CP936等。,5,9.2.1 内置函数open(),如果执行正常,open()函数返回1个文件对象,通过该文件对象可以对文件进行读写操作。如果指定文件不存在、访问权限不够、磁盘空间不够或其他原因导致创建文件对象失败则抛出异常。当对文件内容操作完以后,一定要关闭文件对象,这样才能保证所做的任何修改都确实被保存到文件中。然而,即使我们写了关闭文件的代码,也无法保证文件一定能够正常关闭。例如

5、,如果在打开文件之后和关闭文件之前发生了错误导致程序崩溃,这时文件就无法正常关闭。,6,9.2.1 内置函数open(),7,9.2.2 文件对象常用方法,8,9.2.3 上下文管理语句with,在实际开发中,读写文件应优先考虑使用上下文管理语句with。关键字with可以自动管理资源,不论因为什么原因跳出with块,总能保证文件被正确关闭。除了用于文件操作,with关键字还可以用于数据库连接、网络连接或类似场合。用于文件内容读写时,with语句的语法形式如下:with open(filename, mode, encoding) as fp: #这里写通过文件对象fp读写文件内容的语句,9,

6、9.3 文本文件内容操作案例,例9-1 将字符串写入使用UTF8编码格式的文本文件,然后再读取并输出。s = Hello worldn文本文件的读取方法n文本文件的写入方法nwith open(sample.txt, w, encoding=utf8) as fp: fp.write(s)with open(sample.txt, encoding=utf8) as fp: print(fp.read(),10,9.3 文本文件内容操作案例,例9-2 遍历并输出文本文件的所有行内容。with open(sample.txt) as fp: #假设文件采用CP936编码 for line in

7、fp: #文本文件对象可以直接迭代 print(line),11,9.3 文本文件内容操作案例,例9-3 把列表中若干中英文混合的字符串写入文本文件,并在每行最后加上以井号开头的行号,要求所有行的井号垂直对齐。text = Readability counts., 老龙恼怒闹老农,老农恼怒闹老龙。农怒龙恼农更怒,龙恼农怒龙怕农。, 人生苦短,我用Python, Python程序设计实验指导书,Python可以这样学 Python程序设计开发宝典,玩转Python轻松过二级, 樱桃,cherrylongestLine = max(text, key=lambda s:len(s.encode(g

8、bk)maxLength = len(longestLine.encode(gbk)with open(result.txt, w) as fp: for index, line in enumerate(text): fp.write(line+ *(maxLength-len(line.encode(gbk) + #n.format(index),12,9.3 文本文件内容操作案例,例9-4 读取Python安装目录中news.txt文件的内容,然后输出其中第100个字符开始的50个字符。with open(news.txt, r, encoding=utf8) as fp: conten

9、t = fp.read()print(content100:150),13,9.3 文本文件内容操作案例,例9-5 读取文本文件data.txt(文件中每行存放一个整数)中所有整数,按升序排序后再写入文本文件data_asc.txt中。with open(data.txt) as fp: data = fp.readlines()data.sort(key=int)with open(data_new.txt, w) as fp: fp.writelines(data),14,9.4 JSON文件操作, import json json.dumps(a,b,c) #序列化列表对象a, b, c

10、 json.loads(_) #反序列化,还原对象a, b, c json.dumps(a:1, b:2, c:3) #序列化字典对象a: 1, b: 2, c: 3 json.loads(_)a: 1, b: 2, c: 3 json.dumps(1,2,3,4: 5, 6: 7)1, 2, 3, 4: 5, 6: 7#指定分隔符,可以压缩存储,注意和上面结果的区别 json.dumps(1,2,3,4:5, 6:7, separators=(, :)1,2,3,4:5,6:7 json.loads(_)1, 2, 3, 4: 5, 6: 7 json.dumps(山东烟台) #序列化中文字

11、符串u5c71u4e1cu70dfu53f0 json.loads(_)山东烟台,15,9.4 JSON文件操作, s = 董付国,系列图书:Python程序设计基础(第2版)、Python程序设计(第2版)、Python可以这样学、Python程序设计开发宝典、中学生可以这样学Python、玩转Python轻松过二级、Python程序设计基础与应用、Python程序设计实验指导书、Python编程基础与案例集锦(中学版) with open(test.txt, w) as fp: #将内容序列化并写入文本文件 json.dump(s, fp) with open(test.txt) as f

12、p: #读取文件内容并反序列化 print(json.load(fp)董付国,系列图书:Python程序设计基础(第2版)、Python程序设计(第2版)、Python可以这样学、Python程序设计开发宝典、中学生可以这样学Python、玩转Python轻松过二级、Python程序设计基础与应用、Python程序设计实验指导书、Python编程基础与案例集锦(中学版),16,9.5 CSV文件操作,例9-6 生成数据模拟饭店营业额,并写入CSV文件。import csvimport randomimport datetimefn = data.csv#使用参数newline=使得不会插入空行

13、with open(fn, w, newline=) as fp: #创建csv文件写入对象 wr = csv.writer(fp) #写入表头 wr.writerow(日期, 销量) #把今天作为模拟数据的第一天 startDate = datetime.date.today() #生成30个模拟数据,可以根据需要进行调整 for i in range(1, 30): #生成一个模拟数据,写入csv文件 amount = 300 + i*5 + random.randrange(100) wr.writerow(str(startDate), amount) #下一天 startDate =

14、 startDate + datetime.timedelta(days=1),17,9.6 二进制文件操作,对于二进制文件,不能使用记事本或其他文本编辑软件直接进行正常读写,也不能通过Python的文件对象直接读取和理解二进制文件的内容。必须正确理解二进制文件结构和序列化规则,然后设计正确的反序列化规则,才能准确地理解二进制文件内容。,18,9.6.1 使用pickle模块读写二进制文件,例9-7 使用pickle模块把各类Python对象序列化并写入二进制文件。import pickle#实际要写入的数据#有整数、实数、字符串、列表、元组、集合、字典和自定义对象i = 13000000a

15、= 99.056s = 中国人民 123abclst = 1, 2, 3, 4, 5, 6, 7, 8, 9tu = (-5, 10, 8)coll = 4, 5, 6dic = a:apple, b:banana, g:grape, o:orange,19,9.6.1 使用pickle模块读写二进制文件,#自定义类的对象class Test: def _init_(self, value): self.value = value def _str_(self): return str(self.value)t = Test(3)#把所有要写入的数据放入一个元组,以便编写循环代码data =

16、(i, a, s, lst, tu, coll, dic, t),20,9.6.1 使用pickle模块读写二进制文件,#wb表示打开文件用来写入二进制数据with open(sample_pickle.dat, wb) as f: try: pickle.dump(len(data), f) #要序列化的对象个数 for item in data: pickle.dump(item, f) #序列化数据并写入文件 except: print(写文件异常),21,9.6.1 使用pickle模块读写二进制文件,例9-8 使用pickle模块读取上例中二进制文件的内容。import pickle

17、with open(sample_pickle.dat, rb) as f: n = pickle.load(f) #读出文件中的数据个数 for i in range(n): x = pickle.load(f) #读取并反序列化每个数据 print(x),22,9.6.2 使用struct模块读写二进制文件,例9-9 使用struct模块写入二进制文件。import structn = 99 * 9x = 3.14e15b = Trues = 人生苦短,我用Python。#序列化,q表示长整数,d表示双精度实数,?表示逻辑值#得到的字节串sn长度为17,其中整数和实数各占8个字节,逻辑值占

18、1个字节sn = struct.pack(qd?, n, x, b)with open(sample_struct.dat, wb) as f: f.write(sn) #字符串方法encode()默认使用UTF8编码 #字符串s需要编码为字节串(长度为22)再写入文件 f.write(s.encode(gbk),23,9.6.2 使用struct模块读写二进制文件,例9-10 使用struct模块读取上例中二进制文件的内容。with open(sample_struct.dat, rb) as f: sn = f.read(17) n, x, b1 = struct.unpack(qd?,

19、sn) #使用指定格式反序列化 print(n=,n, x=,x, b1=,b1) s = f.read(22).decode(gbk) print(s=, s),24,9.7 文件与文件夹操作9.7.1 os模块,25,9.7.2 os.path模块,26,9.7.2 os.path模块, import os.path as path fileName = rC:Python37python.exe path.isfile(fileName) #判断是否为文件True path.isdir(fileName) #判断是否为文件夹False path.getsize(fileName) #获取

20、文件大小,单位为字节99992 path.basename(fileName) #获取路径中最后一部分的名称python.exe path.dirname(fileName) #最后一个路径分隔符前面的部分C:Python37 path.splitext(fileName) #分隔文件扩展名(C:Python37python, .exe),27,9.7.2 os.path模块, import os os.getcwd()C:Python37 path.join(os.getcwd(), pythonw.exe) #连接多个路径C:Python37pythonw.exe import time

21、path.getctime(fileName) #获取文件创建时间1530046898.0 time.strftime(%Y-%m-%d %H:%M:%S, #转换时间格式 time.localtime(path.getctime(fileName)2018-06-27 05:01:38,28,9.7.2 os.path模块,例9-11 使用递归法遍历指定文件夹及其子文件夹中的所有子文件夹和文件。from os import listdirfrom os.path import join, isfile, isdirdef listDirDepthFirst(directory): #遍历文件

22、夹,如果是文件就直接输出 #如果是文件夹,就输出显示,然后递归遍历该文件夹 for subPath in listdir(directory): #listdir()列出的是相对路径,需要使用join()把父目录连接起来 path = join(directory, subPath) if isfile(path): print(path) elif isdir(path): print(path) listDirDepthFirst(path),29,9.7.3 shutil模块,30,9.7.3 shutil模块,(1)下面的代码把C:dir1.txt文件复制到D:dir2.txt。 im

23、port shutil shutil.copyfile(C:dir1.txt, D:dir2.txt)(2)下面的代码把C:Python36Dlls文件夹以及该文件夹中所有文件压缩至D:a.zip文件: shutil.make_archive(D:a, zip, C:Python36, Dlls)D:a.zip(3)下面的代码把刚压缩得到的文件D:a.zip解压缩至D:a_unpack文件夹: shutil.unpack_archive(D:a.zip, D:a_unpack),31,9.7.3 shutil模块,(4)下面的代码使用shutil模块的方法删除刚刚解压缩得到的文件夹: shut

24、il.rmtree(D:a_unpack)(5)下面的代码使用shutil的copytree()函数递归复制文件夹,忽略扩展名为pyc的文件和以“新”开头的文件和子文件夹: from shutil import copytree, ignore_patterns copytree(C:python36test, D:des_test, ignore=ignore_patterns(*.pyc, 新*),32,9.7.3 shutil模块,例9-12 自动检测U盘插入并把U盘上所有文件复制到本地硬盘上。from shutil import copytreefrom time import sle

25、epfrom psutil import disk_partitionswhile True: sleep(3) #检查所有驱动器 for item in disk_partitions(): #发现可移动驱动器 if removable in item.opts: driver = item.device #输出可移动驱动器符号 print(Found USB disk:, driver) break else: continue break#复制根目录copytree(driver, rD:usbdriver)print(all files copied.),33,9.8 Excel与Wo

26、rd文件操作案例,例9-13 已知一个包含电影名称、导演名称和参演演员清单的文件“电影导演演员.xlsx”,内容如图9-1所示,其中演员清单中每个演员使用中文逗号分隔。要求使用Python扩展库openpyxl读取其中的数据,并查找关系最好的两个演员和关系最好的三个演员。这里假设,如果某两个演员共同参演电影的数量最多,那么这二人关系最好。,34,9.8 Excel与Word文件操作案例,35,9.8 Excel与Word文件操作案例,from itertools import combinationsfrom functools import reducefrom openpyxl impor

27、t load_workbookdef getData(filename): actors = dict() #打开xlsx文件,并获取第一个worksheet ws = load_workbook(filename).worksheets0 #遍历Excel文件中的所有行 for index, row in enumerate(ws.rows): #绕过第一行的表头 if index = 0: continue #获取电影名称和演员列表 filmName, actor = row0.value, row2.value.split(,) #遍历该电影的所有演员,统计参演电影 for a in a

28、ctor: actorsa = actors.get(a, set() actorsa.add(filmName) return actors,36,9.8 Excel与Word文件操作案例,def relations2(data, num): #参数num表示要查找关系最好的num个人 #包含全部电影名称的集合 allFilms = reduce(lambda x,y: x|y, data.values(), set() #关系最好的num个演员及其参演电影名称 combiData = combinations(data.items(), num) trueLove = max(combiD

29、ata, key=lambda item: len(reduce(lambda x,y:x&y, i1 for i in item, allFilms) return (关系最好的0个演员是1, 共同主演电影数量是2.format(num, tuple(item0 for item in trueLove), len(reduce(lambda x,y:x&y, it1 for it in trueLove, allFilms)data = getData(电影导演演员.xlsx)print(relations2(data, 2)print(relations2(data, 3),37,9.8

30、 Excel与Word文件操作案例,例9-14 假设有一文件data.xlsx,内容如图9-2所示,要求使用Python扩展库openpyxl读取并输出Excel文件中D列所有单元格内容,如果单元格包含公式则输出公式的计算结果。,38,9.8 Excel与Word文件操作案例,from openpyxl import load_workbook#打开Excel文件,获取WorkSheetws = load_workbook(data.xlsx, data_only=True).worksheets0#遍历Excel文件所有行,假设下标为3的列中是公式for row in ws.rows: pr

31、int(row3.value),39,9.8 Excel与Word文件操作案例,例9-15 已知有一个文件data.xlsx,要求在第一个工作表中第3列之前插入一列,并保存为data_new.xlsx文件。from openpyxl import load_workbookws = load_workbook(data.xlsx).worksheets0#在第3列之前插入一列ws.insert_cols(3)#填入数据for index, row in enumerate(ws.rows): if index = 0: row2.value = 新字段 else: row2.value = i

32、ndexwb.save(data_new.xlsx),40,9.8 Excel与Word文件操作案例,例9-16 已知当前文件夹中有若干扩展名为.xlsx的Excel文件,每个文件中第一列为学院名称,第二列为学生姓名,第三列为考试成绩,如图9-3所示。要求把这些文件的内容合并为一个文件,并且把结果文件中第一列按学院名称进行单元格合并,结果文件如图9-4所示。,41,9.8 Excel与Word文件操作案例,42,9.8 Excel与Word文件操作案例,from os import listdirfrom os.path import existsimport openpyxl#结果文件名,如

33、果已存在,先删除result = result.xlsxif exists(result): os.remove(result)#创建结果文件,并添加表头wbResult = openpyxl.Workbook()wsResult = wbResult.worksheets0wsResult.append(学院, 姓名, 成绩),43,9.8 Excel与Word文件操作案例,#遍历当前文件夹中所有xlsx文件,把除表头之外的内容追加到结果文件中for fn in (fns for fns in listdir() if fns.endswith(.xlsx): wb = openpyxl.l

34、oad_workbook(fn) ws = wb.worksheets0 for index, row in enumerate(ws.rows): #跳过表头 if index = 0: continue wsResult.append(list(map(lambda cell:cell.value, row),44,9.8 Excel与Word文件操作案例,#结果文件中所有行,前面加一个空串,方便索引rows = + list(wsResult.rows)index1 = 2rowCount = len(rows)#处理结果文件,合并第一列中合适的单元格while index1 rowCo

35、unt: value = rowsindex10.value #如果当前单元格没有内容,或者与前面的内容相同,就合并 for index2, row2 in enumerate(rowsindex1+1:, index1+1): if not (row20.value = None or row20.value=value): break else: #已到文件尾,合并单元格 wsResult.merge_cells(A+str(index1)+:A+str(index2) break #未到文件尾,合并单元格 wsResult.merge_cells(A+str(index1)+:A+str

36、(index2-1) index1 = index2#保存结果文件wbResult.save(result),45,9.8 Excel与Word文件操作案例,例9-17 编写程序,把当前文件中所有txt文件都转换为对应Excel文件。每个txt文件的第一行是表头信息,并且表头信息和后面每行的数据信息都使用逗号分隔每个字段信息。,46,9.8 Excel与Word文件操作案例,from os import listdirimport openpyxl#获取当前文件夹中所有txt文件名列表txts = fn for fn in listdir() if fn.endswith(.txt)#依次对每

37、个txt文件进行转换for fn in txts: #生成对应的Excel文件名 newFn = fn:-4+.xlsx #创建空白Excel文件 wb = openpyxl.Workbook() ws = wb.worksheets0 #读取txt文件中每一行内容,写入Excel文件 with open(fn, encoding=cp936) as fp: for line in fp: line = line.strip().split(,) #此处,line是包含每列信息的列表 #append()方法会把每列信息存储到一个单元格中 ws.append(line) #保存Excel文件 w

38、b.save(newFn),47,9.8 Excel与Word文件操作案例,例9-18 批量设置Excel文件页眉页脚。import osimport openpyxlfrom openpyxl.worksheet.header_footer import _HeaderFooterPartxlsxFiles = (fn for fn in os.listdir(.) if fn.endswith(.xlsx)for xlsxFile in xlsxFiles: wb = openpyxl.load_workbook(xlsxFile) for ws in wb.worksheets: #设置

39、首页不同、奇偶页不同 ws.HeaderFooter.differentFirst = True ws.HeaderFooter.differentOddEven = True #设置首页的页眉、页脚 ws.firstHeader.left = _HeaderFooterPart(第一页左页眉, size=24, color=FF0000) ws.firstFooter.center = _HeaderFooterPart(第一页中页脚, size=24, color=00FF00) #设置奇数页的页眉、页脚 ws.oddHeader.right = _HeaderFooterPart(奇数页

40、右页眉) ws.oddFooter.center = _HeaderFooterPart(奇数页中页脚) #设置偶数页的页眉、页脚 ws.evenHeader.left = _HeaderFooterPart(偶数页左页眉) ws.evenFooter.center = _HeaderFooterPart(偶数页中页脚) wb.save(new_+xlsxFile),48,9.8 Excel与Word文件操作案例,例9-19 批量修改Excel文件格式:表头加粗并设置为黑体,其他行字体为宋体,设置奇偶行颜色不同,并设置偶数行为从红到蓝的渐变背景色填充。如图9-1所示。代码见配套资源 。,49,

41、9.8 Excel与Word文件操作案例,例9-20 假设某学校所有课程每学期允许多次考试,学生可随时参加考试,系统自动将每次成绩添加到Excel文件(包含3列:姓名,课程,成绩)中,现期末要求统计所有学生每门课程的最高成绩。代码见配套资源。,50,9.8 Excel与Word文件操作案例,例9-21 使用Python扩展库python-docx查找Word文档中所有同时具有红色和加粗这两种样式的文字。docx文件的结构分为三层,1、Docment对象表示整个文档;2、Docment包含了Paragraph对象的列表,每个Paragraph对象用来表示文档中的一个段落;3、一个Paragrap

42、h对象是包含若干Run对象的列表,一个Run对象就是style相同的一段文本。,51,9.8 Excel与Word文件操作案例,from docx import Documentfrom docx.shared import RGBColor#打开Word文件,遍历所有段落doc = Document(test.docx)for p in doc.paragraphs: for r in p.runs: #加粗,并且颜色为红色 if r.bold and r.font.color.rgb = RGBColor(255,0,0): print(r.text),52,9.8 Excel与Word文

43、件操作案例,例9-22 使用Python扩展库python-docx读取并输出docx文档中表格里的内容。from docx import Documentfrom docx.shared import RGBColor#打开Word文档,遍历所有表格doc = Document(test.docx)for table in doc.tables: #遍历当前表格中所有行 for row in table.rows: #获取并输出当前行每个单元格的文本 print(list(map(lambda cell:cell.text, row.cells),53,9.8 Excel与Word文件操作案

44、例,例9-23 使用Python扩展库python-docx提取并保存docx文档中的所有图片。from docx import Documentfrom docx.shared import RGBColordoc = Document(test.docx)for shape in doc.inline_shapes: if shape.type!=3: continue imgID = shape._inline.graphic.graphicData.pic.blipFill.blip.embed imgData = doc.part.related_partsimgID._blob w

45、ith open(str(imgID)+.png, wb) as fp: fp.write(imgData),54,9.8 Excel与Word文件操作案例,例9-24 检查word文档的连续重复字,例如“用户的的资料”或“需要需要用户输入”之类的情况。编写程序,输出指定的Word文档中所有类似的重复字和重复词,然后再人工确认是否错误。from docx import Document#打开指定的Word文件doc = Document(Python程序设计开发宝典.docx)#读取所有段的文本,连接为长字符串contents = .join(p.text for p in doc.parag

46、raphs)#用来存放可疑的文本words = for index, ch in enumerate(contents:-2): #如果当前位置的字符和下一个相同,或者与下下个字符相同,认为可疑 if ch=contentsindex+1 or ch=contentsindex+2: word = contentsindex:index+3 if word not in words: words.append(word) print(word),55,9.8 Excel与Word文件操作案例,例9-25 提取Word文档中例题、插图和表格清单。假设文档中所有例题文本的形式类似于“例9-25 提

47、取.”,插图说明文本形式类似于“图9-25 示意图.”,表格表题文本形式为“表9-25 函数清单.”。,56,9.8 Excel与Word文件操作案例,import refrom docx import Documentresult = li:, fig:, tab:doc = Document(rC:Python可以这样学.docx)for p in doc.paragraphs: #遍历文档所有段落 t = p.text #获取每一段的文本 if re.match(例d+-d+ , t): #例题 resultli.append(t) elif re.match(图d+-d+ , t):

48、#插图 resultfig.append(t) elif re.match(表d+-d+ , t): #表格 resulttab.append(t)for key in result.keys(): #输出结果 print(=*30) for value in resultkey: print(value),57,9.8 Excel与Word文件操作案例,例9-26 已知有一个Word版本的Python题库文件,形式如图9-2所示,每个题目最后的圆括号中是本题的答案。要求编写程序,提取并输出这些答案,如图9-3所示。,58,9.8 Excel与Word文件操作案例,import refrom

49、docx import Document#打开Word文件doc = Document(Python题库.docx)#遍历所有段的文本for p in doc.paragraphs: #获取每一段的文本 t = p.text #使用正则表达式提取章节信息 m = re.match(r第d+章, t) if m: print(t) if 。( in t: #使用正则表达式提取题目编号 num = re.match(rd+.d+, t) print(num.group(0), end= ) #使用字符串方法和切片提取答案 index = t.index(。() print(tindex+2:t.rindex()),59,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号