Asp.net 如何使用IronPython和官方的DotnetAPI正确解析docx/doc中的注释?

Asp.net 如何使用IronPython和官方的DotnetAPI正确解析docx/doc中的注释?,asp.net,parsing,ms-word,openxml,ironpython,Asp.net,Parsing,Ms Word,Openxml,Ironpython,我正在为word文档制作一个解析器。使用官方版本MicrosoftSDK()和IronPython(2.7)。我的大多数文档都包含注释和更正(通过MS Word中的“插入->注释->新注释”命令添加的注释)。我需要解析文档,以便理解注释从哪里开始,从哪里结束 我使用了以下代码: # -*- coding: utf-8 -*- import clr import System import json clr.AddReference('Microsoft.Office.Interop.Word')

我正在为word文档制作一个解析器。使用官方版本MicrosoftSDK()和IronPython(2.7)。我的大多数文档都包含注释和更正(通过MS Word中的“插入->注释->新注释”命令添加的注释)。我需要解析文档,以便理解注释从哪里开始,从哪里结束

我使用了以下代码:

# -*- coding: utf-8 -*-
import clr
import System
import json
clr.AddReference('Microsoft.Office.Interop.Word')
from Microsoft.Office.Interop import Word

filename = 'C:\\eng_ordinary_text.docx'

word_application = Word.ApplicationClass()
word_application.Visible = True

document = word_application.Documents.Open(filename)

text = document.Content.Text
for comment in document.Comments:
    print(comment.Scope.Start)
    print(comment.Scope.End)
    true_text = comment.Scope.Text
    text_with_offset = document.Content.Text[comment.Scope.Start:comment.Scope.End]
    print('scope_text:           "{}"'.format(true_text))
    print('text_between_indexes: "{}"'.format(text_with_offset))
    print('___________________\n')
我得到这个结果:

9
17
scope_text:           "ordinary"
text_between_indexes: "ordinary"
___________________

19
23
scope_text:           "text"
text_between_indexes: "ext."
___________________
在屏幕截图()上,你可以看到问题所在。如果在注释索引之间打印文档文本,第一条注释看起来是正确的,但第二条注释偏移了一个符号

你可以下载我的文档示例

一开始这并不烦人,但当文档变得更大(30页或更多)时,shift可能是出错的原因(例如,当某个符号被限定范围(“a”)时),该符号可能会出现多次,您无法确定在注释中选择了哪一个

这只是问题的一小部分。在这之后,我遇到了另一个问题,当开始索引和结束索引偏移不仅在右边,而且在左边。我已经学习文档两周了,但我没有掌握解决方案

我需要你的帮助,提前谢谢你

p、 对不起我的英语,我正在努力提高它:D