2017-07-19 3 views
0

を使用しながら:奇妙な振る舞い私はこれをやっている単語

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?

+0

これはPython 2.xまたは3.xで実行していますか? 3.xでは、どのように違いがあるのか​​分かりません(項目間に改行がないことを除いて)。2.xでは、単一の 'print'文の括弧は、あなたが実際にtuple - 'str()'ではなく、アイテムの 'repr()'を取得しています。おそらく 'page_name'はブランクの' repr() 'を持つオブジェクトですか? – jasonharper

+0

IPython 3.5が正確です。 – Rahul

答えて

0

を動作は、Microsoft Wordの表は、表のセルの文字の終了を持っているという事実によるものです。

のでpage_name = tbl.Cell(i, 1).Range.Paragraphs(1).Range.Textは、細胞プラスCR'\r')にどんなテキストを取得し、BEL( '•')します。したがって、正しく印刷されません。

print(page_name.split('\r')[0] , hyper_link)はこの状況でうまくいきます。