使用 word 时 Pywin32 的奇怪行为

Strange behavior of Pywin32 while using word

我正在这样做:

import win32com.client as win32
infile = r"D:\path\to\file.docx"
# def word_table(infile):
word = win32.gencache.EnsureDispatch('Word.Application')
doc = word.Documents.Open(infile)
word.Visible = False
rng = doc.Range()
for tbl in rng.Tables:
    for i in range(tbl.Rows.Count):
        page_name = tbl.Cell(i, 1).Range.Paragraphs(1).Range.Text
        hyper_link = tbl.Cell(i, 2).Range.Paragraphs(1).Range.Hyperlinks(1).Address
        print(page_name,  hyper_link)

这只打印 hyper_link 而不是 page_name (即使我更改了顺序)。 但如果我这样做:

print(page_name)
print(hyper_link)

这很好用。 我猜不出这种意外行为的原因。

我把它贴出来作为这个问题的答案: How to extract hyperlinks from MS Word table with Python?

该行为是由于 Microsoft Word table 具有 table 单元格字符结束。

因此 page_name = tbl.Cell(i, 1).Range.Paragraphs(1).Range.Text 将抓取单元格中的任何文本加上 CR ('\r') 和 BEL ('•') 。因此打印不正确。

print(page_name.split('\r')[0] , hyper_link) 在这种情况下工作得很好。