python docx的超链接网址和链接文本操作
我就废话不多说了,大家还是直接看代码吧~
fromdocximportDocument fromdocximportRT importre d=Document("./liu2.docx") forpind.paragraphs: rels=d.part.rels forrelinrels: ifrels[rel].reltype==RT.HYPERLINK: print("\n超链接文本为",rels[rel],"超链接网址为:",rels[rel]._target)
补充:Python输出“test.docx“文档正文中的所有红色的文字、输出文档中所有的超链接地址和文本
一、题目:
1、查阅资料了解.docx文档结构,然后编写程序,输出"test.docx"文档正文中的所有红色的文字。
2、查阅资料了解.docx文档结构,然后查阅资料,编写程序,输出"测试.docx"文档中所有的超链接地址和文本。
3、已知文件“超市营业额1.xlsx”中记录了某超市2019年3月1日至5日各员工在不同时段、不同柜台的销售额。部分数据如图,要求编写程序,读取该文件的数据,并统计每个员工的销售总额、每个时段的销售总额、每个柜台的销售总额。
超市营业额1.xlsx文件图
二、代码展示:
#-*-coding:utf-8-*- """" @Author:Jackma @Time:2020/11/721:26 @File:2020_11_7.py @Software:PyCharm @URL:www.jackmark.top @Version: """ #1、查阅资料了解.docx文档结构,然后编写程序,输出"test.docx"文档正文中的所有红色的文字。 #2、查阅资料了解.docx文档结构,然后查阅资料,编写程序,输出"测试.docx"文档中所有的超链接地址和文本。 #3、已知文件“超市营业额1.xlsx”中记录了某超市2019年3月1日至5日各员工在不同时段、不同柜台的销售额。 #部分数据如图,要求编写程序,读取该文件的数据,并统计每个员工的销售总额、每个时段的销售总额、每个 #柜台的销售总额。 #4、查阅资料,编写程序操作Excel文件。已知当前文件夹中的文件“每个人的爱好.xlsx”的内容如图中A到H列所 #示,要求追加一列,并如图中方框所示进行汇总。 fromdocximportDocument fromdocx.sharedimportRGBColor fromdocx.opc.constantsimportRELATIONSHIP_TYPEasRT fromopenpyxlimportload_workbook #1 deffind_bold_red(): ''' 输出文档中的所有红色的、加粗的文字 :return: ''' #定义两个列表 boldText=[]#存储加粗的文字 redText=[]#存储红色字体的文字 name1=input('输入你要查询的文件名(without.docx):') #doc1=Document('test.docx')#打开文档 doc1=Document(name1+'.docx')#打开文档 forpindoc1.paragraphs:#遍历里面的每个段落 forrinp.runs:#找每段中所有的run,run指连续的相同格式的字体 ifr.bold:#找到加粗字体 boldText.append(r.text)#把run的文本放到boldText文本中 ifr.font.color.rgb==RGBColor(255,0,0):#rgb(255,0,0)代表红色,找到红色字体 redText.append(r.text) result={'redtext':redText, 'boldtext':boldText, 'both':set(redText)&set(boldText)#集合的交集 } #输出结果 fortitleinresult.keys(): print(title.center(30,'='))#长度为30,center指居中,效果如下 #===========redtext============ fortextinresult[title]: print(text) find_bold_red() #2 #deffind_Hyperlink(): #''' #只适用于WPS创建的文档 #输出"test.docx"文档中所有的超链接地址和文本 #:return: #''' #doc2=Document('test.docx') #forpindoc2.paragraphs: #forindex,runinenumerate(p.runs): #ifrun.style.name=='Hyperlink': #print(run.text,end=':') #forchildinp.runs[index-2].element.getchildren(): #text=child.text #iftextandtext.stratswith('HYPERLINK'): #print(text[12:-2]) # #find_Hyperlink() deffind_Hyperlink(): ''' 输出"test.docx"文档中所有的超链接地址和文本 :return: ''' docx_file=input("输入你要查询的文件名(without.docx):") document=Document(docx_file+".docx") rels=document.part.rels forrelinrels: ifrels[rel].reltype==RT.HYPERLINK: #print("\n超链接文本为",rels[rel],"超链接网址为:",rels[rel]._target) print("超链接网址为:",rels[rel]._target) find_Hyperlink() #3 defmoney(): ''' 统计每个员工的销售总额、每个时段的销售总额、每个柜台的销售总额。 :return: ''' #3个字典分别存储按员工、按时段、按柜台的销售总额 persons=dict() periods=dict() goods=dict() ws=load_workbook('超市营业额1.xlsx').worksheets[0] forindex,rowinenumerate(ws.rows): #跳过第一行的表头 ifindex==0: continue #获取每行的相关信息 _,name,_,time,num,good=map(lambdacell:cell.value,row) #根据每行的值更新三个字典 persons[name]=persons.get(name,0)+num periods[time]=periods.get(time,0)+num goods[good]=goods.get(good,0)+num print(persons) print(periods) print(goods) money()
三、结果展示:
首先是测试文档test.docx内容
图1test.docx文件图
程序1、
输出"test.docx"文档正文中的所有红色的文字。
程序2、
输出"test.docx"文档中所有的超链接地址和文本。
程序3、
统计每个员工的销售总额、每个时段的销售总额、每个柜台的销售总额。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。