我就廢話不多說了,大家還是直接看代碼吧~
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], " 超鏈接網(wǎng)址為: ", rels[rel]._target)
補充:Python輸出“test.docx“文檔正文中的所有紅色的文字、輸出文檔中所有的超鏈接地址和文本
一、題目:
1、查閱資料了解.docx文檔結(jié)構(gòu),然后編寫程序,輸出"test.docx"文檔正文中的所有紅色的文字。
2、查閱資料了解.docx文檔結(jié)構(gòu),然后查閱資料,編寫程序,輸出"測試.docx"文檔中所有的超鏈接地址和文本。
3、已知文件“超市營業(yè)額1.xlsx”中記錄了某超市2019年3月1日至5日各員工在不同時段、不同柜臺的銷售額。部分數(shù)據(jù)如圖,要求編寫程序,讀取該文件的數(shù)據(jù),并統(tǒng)計每個員工的銷售總額、每個時段的銷售總額、每個柜臺的銷售總額。
![](/d/20211017/b07f5ee63bc391177e6d5eaded2664a0.gif)
超市營業(yè)額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文檔結(jié)構(gòu),然后編寫程序,輸出"test.docx"文檔正文中的所有紅色的文字。
# 2、查閱資料了解.docx文檔結(jié)構(gòu),然后查閱資料,編寫程序,輸出"測試.docx"文檔中所有的超鏈接地址和文本。
# 3、已知文件“超市營業(yè)額1.xlsx”中記錄了某超市2019年3月1日至5日各員工在不同時段、不同柜臺的銷售額。
# 部分數(shù)據(jù)如圖,要求編寫程序,讀取該文件的數(shù)據(jù),并統(tǒng)計每個員工的銷售總額、每個時段的銷售總額、每個
# 柜臺的銷售總額。
# 4、查閱資料,編寫程序操作Excel文件。已知當(dāng)前文件夾中的文件“每個人的愛好.xlsx”的內(nèi)容如圖中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指連續(xù)的相同格式的字體
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) # 集合的交集
}
# 輸出結(jié)果
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創(chuàng)建的文檔
# 輸出"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], " 超鏈接網(wǎng)址為: ", rels[rel]._target)
print(" 超鏈接網(wǎng)址為: ", rels[rel]._target)
find_Hyperlink()
# 3
def money():
'''
統(tǒng)計每個員工的銷售總額、每個時段的銷售總額、每個柜臺的銷售總額。
:return:
'''
# 3個字典分別存儲按員工、按時段、按柜臺的銷售總額
persons = dict()
periods = dict()
goods = dict()
ws = load_workbook('超市營業(yè)額1.xlsx').worksheets[0]
for index, row in enumerate(ws.rows):
# 跳過第一行的表頭
if index == 0:
continue
# 獲取每行的相關(guān)信息
_, name, _, time, num, good = map(lambda cell: cell.value, row)
# 根據(jù)每行的值更新三個字典
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()
三、結(jié)果展示:
首先是測試文檔test.docx內(nèi)容
![](/d/20211017/970ad8b3cc60cf2799a6a710a11a026c.gif)
圖1 test.docx文件圖
程序1、
輸出"test.docx"文檔正文中的所有紅色的文字。
![](/d/20211017/c77d3f26cbaf0313828db67f7fd96d90.gif)
程序2、
輸出"test.docx"文檔中所有的超鏈接地址和文本。
![](/d/20211017/9329bde3ca307b586669ae37d08d78e7.gif)
程序3、
統(tǒng)計每個員工的銷售總額、每個時段的銷售總額、每個柜臺的銷售總額。
![](/d/20211017/75243608db0dc048ed5c88559c927188.gif)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- 安裝python-docx后,無法在pycharm中導(dǎo)入的解決方案
- Python安裝docx依賴包教程
- Python-docx 實現(xiàn)整體修改或者部分修改文字的大小和字體類型
- 使用Python docx修改word關(guān)鍵詞顏色的操作
- Python中docx2txt庫的使用說明
- 詳解用 python-docx 創(chuàng)建浮動圖片
- python 實現(xiàn)docx與doc文件的互相轉(zhuǎn)換