使用 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)
在这种情况下工作得很好。
我正在这样做:
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)
在这种情况下工作得很好。