3

Word 文書の 2 つのテキストの間にある特定の表のリストを抽出しようとしています。私はこれにpython docxを使用していますが、私が直面しているのは、テキストを使用して解析できることです

document.paragraphs[index].text

テーブルは使用して解析されますが、

document.tables[index].cell[row,col]

これにより、テキストと表が分離され、表のリストを 2 つのテキストの間に含めることが難しくなります。私が試みているアプローチは、以下のフォームの各リストの要素を使用して、段落/テーブルのアドレスを取得することです。

<docx.text.paragraph.Paragraph object at 0x04299FD0>

次に、各テーブルのアドレスを抽出し、それが開始テキストのアドレスと終了テキストのアドレスの間にあるかどうかを確認します。しかし、問題は、すべてのテーブルアドレスがテキストの開始アドレスと終了アドレスよりも大きく、アドレスがドキュメントを通じて徐々に連続していると仮定したため、python docx がそれらのアドレスを見つける方法に関するドキュメントが見つからなかったことです。この方法は機能しますか? Word 文書内の 2 つのテキスト間にあるこれらの表を確認するには、他にどのようなアプローチを試みることができますか?

4

1 に答える 1

1

ここで説明されているこの制限の回避策があります: https://github.com/python-openxml/python-docx/issues/40

最後までスクロールして、通常の方法と同様に逆の順序で読むことをお勧めします。python-docx最近のバージョンでの内部の変更に基づいて、手順にいくつかの調整が加えられました。

以下のようなオブジェクトに表示されるアドレスは、メモリの場所を参照し、python-docx ドキュメント内の段落の順序やその他のコンテンツとの関係は定義されていません。それらは、その Python メモリ内オブジェクトの一意の識別子として信頼できますが、それ以上のものではありません。「ドキュメント オブジェクト」ではなく、「メモリ オブジェクト」という用語を慎重に使用することに注意してください。たとえば、両方ともドキュメント内の同じ段落を参照する 2 つのオブジェクトが作成された場合、それらは 2 つの異なるアドレスを持つことになります。

<docx.text.paragraph.Paragraph object at 0x04299FD0>

これらの値はid()、Python の関数を使用してアクセスできます。https://docs.python.org/2/library/functions.html#id

于 2015-07-02T20:51:35.117 に答える