最近学育婴师,老师发了一套doc操作参考
……
- from docx import Document
- from openpyxl import load_workbook
- import glob
- import re
-
- # 将模板 Excel 读取进程序:
- path = r"C:\Users\jg2yXRZ\OneDrive\桌面\三级操作题"
- file=path + r'\育婴师三级教育操作参考.docx' # 必须是docx
- print(file)
- # C:\Users\jg2yXRZ\OneDrive\桌面\三级操作题\育婴师三级教育操作参考2.docx
-
-
- # 提取四个加粗标题所在的行数 # 参考https://www.shouxicto.com/article/96876.html
- doc= Document(file)
-
-
- # 遍历每个段落并判断是否为空白行,如果有空白行,就删除
- for paragraph in doc.paragraphs:
- if not paragraph.text.strip():
- # 如果是空白行则将其从文档中移除
- p = paragraph._element
- p.getparent().remove(p)
-
-
- doc.save(path + r'\育婴师三级教育操作参考(去掉回车).docx')
-
- print('----2、读取word里面标题加粗段落的行数------')
-
- filename=path + r'\育婴师三级教育操作参考(去掉回车).docx'
-
- # 打开Word文档
- doc = Document(filename)
-
- d=len(doc.paragraphs)
- print(d)
- # docx没有去掉空行前,一共有258段文字
- # docx去掉空行后,一共有244段文字
-
-
- h=[]
- s=[]
- # 遍历文档中的段落
- for i, paragraph in enumerate(doc.paragraphs):
- if paragraph.runs:
- # 检查段落中的所有运行对象
- for run in paragraph.runs:
- if run.bold:
- # 如果运行对象的文字为加粗,则打印段落索引
- # print("段落", i, "的文字被加粗了")
- h.append(i)
- # 提取每一份的加粗标题
- t=doc.paragraphs[i].text
- # print(t)
- s.append(t)
- s=list(set(s))
- s.sort()
- # print(s)
- # ['3.1.1 运用发育诊断法对2岁婴儿的以不同步子行走能力进行测试', '3.1.2 为2岁婴儿编制规范、适宜的个别化游戏活动计划(5分钟)', '3.1.3 设计生活中婴儿动手自理的活动(5分钟)', '3.1.4 六个月以内
- # 的婴儿的精细动作的日常练习活动设计(5分钟)', '3.1.5 列举两种感统练习器械,并简述其活动功能(5分钟)', '3.2.1 请阐述对婴儿语言发展水平的观察与记录方法(5分钟)', '3.2.2 如何制定婴幼儿个别化
- # 语言培养计划(5分钟)', '3.2.3 设计一份记录表格,观察一个6个月左右的宝宝寻找不同声源的感知练习过程(5分钟)', '3.2.4 设计一个观察表,观察并调整婴儿在视动协调方面的练习(5分钟)', '3.2.5 设
- # 计一个观察表,记录孩子可能发生的行为(5分钟)', '3.3.1 如何对待任性的孩子(5分钟)', '3.3.2 如何对待爱哭的孩子(5
- # print(len(s))
- # 13
-
- h=list(set(h))
- h.sort()
- j=h[1:]
- j.append(d)
-
- print(h)
- print(len(h))
- print(j)
- print(len(j))
- # # 去掉空行前
- # # [1, 25, 48, 64, 77, 95, 117, 136, 158, 179, 200, 218, 238]
- # # 13
- # # [25, 48, 64, 77, 95, 117, 136, 158, 179, 200, 218, 238, 258]
- # # 13
- # # 去掉空行后
- # # [1, 23, 45, 60, 72, 89, 110, 127, 148, 168, 188, 205, 224]
- # # 13
- # # [23, 45, 60, 72, 89, 110, 127, 148, 168, 188, 205, 224, 244]
1、提取加粗标题的文字部分,做保存的文件名
2、提取两个黑体加粗标题之间的行数
- print('----3、读取word里面标题加粗段落的行数+表格占的段落数------')
- # 拆分docx(读取加粗的行,这些行还要加上表格的行数)
- # 13张表格里面分别有几个表格
-
- imagePath1=path+r'\育婴师13题拆分'
- if not os.path.exists(imagePath1): # 判断存放图片的文件夹是否存在
- os.makedirs(imagePath1) # 若图片文件夹不存在就创建
-
-
-
- # for x in range(len(s)):
- # 获取第一页的段落和表格
- # a=int(j[x]+o[x])
- for x in range(len(s)):
- doc = Document(filename)
- first_page_paragraphs = []
- first_page_tables = []
- for element in doc.element.body:
- if element.tag.endswith(('}p', '}tbl')):
-
- if element.getparent().index(element) >int(j[x]) :
- if element.tag.endswith('p'):
- first_page_paragraphs.append(element)
- else:
- first_page_tables.append(element)
- if element.getparent().index(element)<int(h[x]):
- if element.tag.endswith('p'):
- first_page_paragraphs.append(element)
- else:
- first_page_tables.append(element)
- # print(int(j[x]+o[x]))
- # print(int(h[x]+o[x]))
-
-
- # 删除第一页的段落和表格
- for paragraph in first_page_paragraphs:
- p = paragraph.getparent()
- p.remove(paragraph)
-
-
- for table in first_page_tables:
- t = table.getparent()
- t.remove(table)
-
- # # 保存修改后的文档为新文件
- # doc.save(path+r'01.docx')
- doc.save(imagePath1+r'\{} {}.docx'.format('%02d'%x,s[x]))
- print('----3、读取word里面标题加粗段落的行数+表格占的段落数------')
- # 拆分docx(读取加粗的行,这些行还要加上表格的行数)
- # 13张表格里面分别有几个表格
-
- bg=[2,1,0,1,1,1,1,1,1,1,0,0,0]
-
- # 第一张表是原来的段落数,所以就是0
- bg.insert(0,0)
- # print(bg)
-
- # 数字累加
- o = []
- sum = 0
- for num in bg:
- sum += num
- o.append(sum)
- print(o)
- # [0, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
- # # # 没有空行的内容
- # https://blog.csdn.net/lau_jw/article/details/114383781
-
- '''
- 目的:育婴师word题目拆分成多个表格(根据标题(加粗)所在行数拆分)
- 作者:阿夏
- 时间:2024年2月27日
- '''
-
- from docx import Document
- from openpyxl import load_workbook
- import glob
- import re,os
-
- print('----1、word数据清洗------')
-
-
- path = r"C:\Users\jg2yXRZ\OneDrive\桌面\三级操作题"
- file=path + r'\育婴师三级教育操作参考.docx' # 必须是docx
- print(file)
- # C:\Users\jg2yXRZ\OneDrive\桌面\三级操作题\育婴师三级教育操作参考2.docx
-
-
- # 提取四个加粗标题所在的行数 # 参考https://www.shouxicto.com/article/96876.html
- doc= Document(file)
-
- # 遍历每个段落并判断是否为空白行,如果有空白行,就删除
- for paragraph in doc.paragraphs:
- if not paragraph.text.strip():
- # 如果是空白行则将其从文档中移除
- p = paragraph._element
- p.getparent().remove(p)
-
-
- doc.save(path + r'\育婴师三级教育操作参考(去掉回车).docx')
-
-
-
- print('----2、读取word里面标题加粗段落的行数------')
-
- filename=path + r'\育婴师三级教育操作参考(去掉回车).docx'
-
- # 打开Word文档
- doc = Document(filename)
-
- d=len(doc.paragraphs)
- print(d)
- # docx没有去掉空行前,一共有258段文字
- # docx去掉空行后,一共有244段文字
-
-
- h=[]
- s=[]
- # 遍历文档中的段落
- for i, paragraph in enumerate(doc.paragraphs):
- if paragraph.runs:
- # 检查段落中的所有运行对象
- for run in paragraph.runs:
- if run.bold:
- # 如果运行对象的文字为加粗,则打印段落索引
- # print("段落", i, "的文字被加粗了")
- h.append(i)
- # 提取每一份的加粗标题
- t=doc.paragraphs[i].text
- # print(t)
- s.append(t)
- s=list(set(s))
- s.sort()
- # print(s)
- # ['3.1.1 运用发育诊断法对2岁婴儿的以不同步子行走能力进行测试', '3.1.2 为2岁婴儿编制规范、适宜的个别化游戏活动计划(5分钟)', '3.1.3 设计生活中婴儿动手自理的活动(5分钟)', '3.1.4 六个月以内
- # 的婴儿的精细动作的日常练习活动设计(5分钟)', '3.1.5 列举两种感统练习器械,并简述其活动功能(5分钟)', '3.2.1 请阐述对婴儿语言发展水平的观察与记录方法(5分钟)', '3.2.2 如何制定婴幼儿个别化
- # 语言培养计划(5分钟)', '3.2.3 设计一份记录表格,观察一个6个月左右的宝宝寻找不同声源的感知练习过程(5分钟)', '3.2.4 设计一个观察表,观察并调整婴儿在视动协调方面的练习(5分钟)', '3.2.5 设
- # 计一个观察表,记录孩子可能发生的行为(5分钟)', '3.3.1 如何对待任性的孩子(5分钟)', '3.3.2 如何对待爱哭的孩子(5
- # print(len(s))
- # 13
-
- h=list(set(h))
- h.sort()
- j=h[1:]
- j.append(d)
-
- print(h)
- print(len(h))
- print(j)
- print(len(j))
- # # 去掉空行前
- # # [1, 25, 48, 64, 77, 95, 117, 136, 158, 179, 200, 218, 238]
- # # 13
- # # [25, 48, 64, 77, 95, 117, 136, 158, 179, 200, 218, 238, 258]
- # # 13
- # # 去掉空行后
- # # [1, 23, 45, 60, 72, 89, 110, 127, 148, 168, 188, 205, 224]
- # # 13
- # # [23, 45, 60, 72, 89, 110, 127, 148, 168, 188, 205, 224, 244]
-
-
- print('----3、读取word里面标题加粗段落的行数+表格占的段落数------')
- # 拆分docx(读取加粗的行,这些行还要加上表格的行数)
- # 13张表格里面分别有几个表格
-
- bg=[2,1,0,1,1,1,1,1,1,1,0,0,0]
-
- # 第一张表是原来的段落数,所以就是0
- bg.insert(0,0)
- # print(bg)
-
- # 数字累加
- o = []
- sum = 0
- for num in bg:
- sum += num
- o.append(sum)
- print(o)
- # [0, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
- # # # 没有空行的内容
-
-
- print('----3、读取word里面标题加粗段落的行数+表格占的段落数------')
- # 拆分docx(读取加粗的行,这些行还要加上表格的行数)
- # 13张表格里面分别有几个表格
-
- imagePath1=path+r'\育婴师13题拆分'
- if not os.path.exists(imagePath1): # 判断存放图片的文件夹是否存在
- os.makedirs(imagePath1) # 若图片文件夹不存在就创建
-
-
-
- # for x in range(len(s)):
- # 获取第一页的段落和表格
- # a=int(j[x]+o[x])
- for x in range(len(s)):
- doc = Document(filename)
- first_page_paragraphs = []
- first_page_tables = []
- for element in doc.element.body:
- if element.tag.endswith(('}p', '}tbl')):
-
- if element.getparent().index(element) >int(j[x]+o[x]) :
- if element.tag.endswith('p'):
- first_page_paragraphs.append(element)
- else:
- first_page_tables.append(element)
- if element.getparent().index(element)<int(h[x]+o[x]):
- if element.tag.endswith('p'):
- first_page_paragraphs.append(element)
- else:
- first_page_tables.append(element)
- # print(int(j[x]+o[x]))
- # print(int(h[x]+o[x]))
-
-
- # 删除第一页的段落和表格
- for paragraph in first_page_paragraphs:
- p = paragraph.getparent()
- p.remove(paragraph)
-
-
- for table in first_page_tables:
- t = table.getparent()
- t.remove(table)
-
- # # 保存修改后的文档为新文件
- # doc.save(path+r'01.docx')
- doc.save(imagePath1+r'\{} {}.docx'.format('%02d'%x,s[x]))
-
-
-
-
-
-