我已经尽力提取文档中的所有超链接及其相关文本。另外,更新“文本”与某些关键字匹配的链接。几天后,我可以通过以下代码提取所有超链接。
import docx
from docx import Document
from docx.opc.constants import RELATIONSHIP_TYPE as RT
document = Document('test.docx')
rels = document.part.rels
for rel in rels:
if rels[rel].reltype == RT.HYPERLINK:
hyperlink_rel = rels[rel]
hyperlink = hyperlink_rel._target
print(hyperlink)
document.save("test.docx")
但我无法获取文本并应用条件。这就是我想要的
for rel in rels:
if rels[rel].reltype == RT.HYPERLINK:
hyperlink_rel = rels[rel]
hyperlink = hyperlink_rel._target
text = hyperlink_rel._text
if text == "jira link":
hyperlink_rel._target = "www.example.com"
首先我需要获取所有超链接和相关文本。然后根据条件用新的 URL 更新超链接。
为了更好地理解,假设我的文档中有三个超链接:Jira1、Jira2 和 Jira3。现在我想获取所有可能指向“www.jira.com”的三个超链接以及超链接的名称:Jira1、Jir2 和 Jira3。
尝试一下,您可以将打印调整为变量或任何输出
from docx import Document
doc = Document(<insert_full_path>)
para_lines = 0
print("[")
for line in doc.paragraphs:
if len(line.hyperlinks) > 0 :
for link in line.hyperlinks:
print("{")
print(f"line: {para_lines},")
print(f"url_text: {link.text},")
print(f"url_raw: {link.address},")
print(f"full_text: {line.text},")
print("}")
print(f",")
para_lines += 1
print("]")