• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python docx的超链接网址和链接文本操作

python 搞代码 4年前 (2022-01-07) 71次浏览 已收录 0个评论
文章目录[隐藏]

这篇文章主要介绍了python docx的超链接网址和链接文本操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

我就废话不多说了,大家还是直接看代码吧~

 from docx import Document from docx import RT import re d=Document("./liu2.docx") for p in d.paragraphs: rels = d.part.rels for rel in rels: if rels[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/7 21: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列所 # 示,要求追加一列,并如图中方框所示进行汇总。 from docx import Document from docx.shared import RGBColor from docx.opc.constants import RELATIONSHIP_TYPE as RT from openpyxl import load_workbook # 1 def find_bold_red(): ''' 输出文档中的所有红色的、加粗的文字 :return: ''' # 定义两个列表 boldText = [] # 存储加粗的文字 redText = [] # 存储红色字体的文字 name1 = input('输入你要查询的文件名(without .docx):') # doc1 = Document('test.docx') # 打开文档 doc1 = Document(name1 + '.docx') # 打开文档 for p in doc1.paragraphs: # 遍历里面的每个段落 for r in p.runs: # 找每段中所有的run, run指连续的相同格式的字体 if r.bold: # 找到加粗字体 boldText.append(r.text) # 把run的文本放到boldText文本中 if r.font.color.rgb == RGBColor(255,0,0): # rgb(255,0,0)代表红色,找到红色字体 redText.append(r.text) result = {'red text': redText, 'bold text': boldText, 'both': set(redText) & set(boldText) # 集合的交集 } # 输出结果 for title in result.keys(): print(title.center(30, '=')) # 长度为30,center指居中,效果如下 # ===========red text============ for text in result[title]: print(text) find_bold_red() # 2 # def find_Hyperlink(): # ''' # 只适用于WPS创建的文档 # 输出"test.docx"文档中所有的超链接地址和文本 # :return: # ''' # doc2 = Document('test.docx') # for p in doc2.paragrap<em style="color:transparent">来源[email protected]搞@^&代*@码)网</em>hs: #  for index, run in enumerate(p.runs): #  if run.style.name == 'Hyperlink': #   print(run.text, end =':') #   for child in p.runs[index-2].element.getchildren(): #   text = child.text #   if text and text.stratswith('HYPERLINK'): #    print(text[12:-2]) # # find_Hyperlink() def find_Hyperlink(): ''' 输出"test.docx"文档中所有的超链接地址和文本 :return: ''' docx_file=input(" 输入你要查询的文件名(without .docx): ") document = Document(docx_file + ".docx") rels = document.part.rels for rel in rels: if rels[rel].reltype == RT.HYPERLINK: # print("\n 超链接文本为", rels[rel], " 超链接网址为: ", rels[rel]._target) print(" 超链接网址为: ", rels[rel]._target) find_Hyperlink() # 3 def money(): ''' 统计每个员工的销售总额、每个时段的销售总额、每个柜台的销售总额。 :return: ''' # 3个字典分别存储按员工、按时段、按柜台的销售总额 persons = dict() periods = dict() goods = dict() ws = load_workbook('超市营业额1.xlsx').worksheets[0] for index, row in enumerate(ws.rows): # 跳过第一行的表头 if index == 0: continue # 获取每行的相关信息 _, name, _, time, num, good = map(lambda cell: 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内容

图1 test.docx文件图

程序1、

输出”test.docx”文档正文中的所有红色的文字。

程序2、

输出”test.docx”文档中所有的超链接地址和文本。

程序3、

统计每个员工的销售总额、每个时段的销售总额、每个柜台的销售总额。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持gaodaima搞代码网。如有错误或未考虑完全的地方,望不吝赐教。

以上就是python docx的超链接网址和链接文本操作的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python docx的超链接网址和链接文本操作

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址