python docx的超链接网址和链接文本操作
作者:追梦小狂魔 发布时间:2021-06-05 22:10:55
标签: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.paragraphs:
# 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、
统计每个员工的销售总额、每个时段的销售总额、每个柜台的销售总额。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
来源:https://blog.csdn.net/qq_15557299/article/details/112094458
0
投稿
猜你喜欢
- MySQL 8.0.28引入新功能MySQL 8.0.28开始,新增一个特性,支持监控统计并限制各个连接(会话)的内存消耗,避免大量用户连接
- 假设在python中有一字典如下:x={‘a':'1,2,3', ‘b':'2,3,4'}需
- vue-cli-service build 环境设置使用vue-cli3打包项目,通过配置不同的指令给项目设置不一样的配置。npm run
- 本文实例为大家分享了python实现学生管理系统的具体代码,供大家参考,具体内容如下一.面向过程版import osstu_list = [
- 上下文管理器是一种 Python 构造,它提供了一个类似 try-finally 的环境,具有一致的接口和方便的语法,例如通过&ld
- http://www.gotapi.com/ 语言:英语 简介:HTML,CSS,XPATH,XSL,JAVASCRIP
- 前言需求是将两个list同时进行遍历,然后同步的将每个元素add到一个dict中,虽然有麻烦的方式,比如直接用list的数组下标可以实现,但
- substr --- 取得部份字符串 语法 : string substr (string string, int start [, int
- 我们肯定都很熟悉商品购物车这一功能,每当我们在某宝某东上购买商品的时候,看中了哪件商品,就会加入购物车中,最后结算。购物车这一功能,方便消费
- 具体代码如下所示:#coding=utf-8__author__ = 'Eagle'import osimport time
- 前段时间被IE和JavaScript脚本引擎的Memory Leak问题弄得郁闷坏了,不过幸好现在总算是柳暗花明了,并且找到了一些IE中使用
- 1. PHP入侵检测系统PHP IDS(即PHP-入侵检测系统)是一套易于使用、结构良好、速度出色且专门面向PHP类Web应用程序的先进安全
- 在炼丹时,数据的读取与预处理是关键一步。不同的模型所需要的数据以及预处理方式各不相同,如果每个轮子都我们自己写的话,是很浪费时间和精力的。P
- 1. union合并查询结果集查询工作岗位是 MANAGER 和 SALESMAN 的员工?mysql> select ename,
- django settings.py 配置文件import osBASE_DIR = os.path.dirname(os.path.dir
- 生成一个2000*5的表格,每个单元格的内容是行号+逗号+列号 方法一:使用createElement生成表格,使用insertRow和in
- (1)、导库import pandas as pdfrom pandas import Series(2)、读取csv文件的两种方式#读取c
- 下面我们将学习两个项目案例代码,分别解决Excel常见场景中的数据筛选问题和数据匹配问题。数据筛选要求我们在表中筛选出符合条件的数据。数据匹
- 在计算机中数据有两种特征:类型和长度。所谓数据类型就是以数据的表现方式和存储方式来划分的数据的种类。在SQL Server 中每个变量、参数
- 不使用int()函数的情况下把字符串转换为数字,如把字符串"12345"转换为数字12345。方法一:利用str函数既然