【发布时间】:2014-09-26 10:13:36
【问题描述】:
我想提取带有删除线的单词,即带有<w:delText> 标签的单词。我使用了一个表达式,它成功地提取了它,只是有些单词出现了损坏。例如,单词 "They" 显示为 'T' 和 'hey' 。下面给出了一个问题仍然存在的 xml 示例:
<w:delText
xml:space="preserve">.
</w:delText></w:r><w:r
w:rsidR="0020338C"
w:rsidDel="00147CFE"><w:rPr><w:rFonts
w:ascii="Times
New
Roman"
w:hAnsi="Times
New
Roman"/><w:sz
w:val="24"/></w:rPr><w:delText>T</w:delText></w:r><w:r
w:rsidR="00DF6A7D"
w:rsidDel="00147CFE"><w:rPr><w:rFonts
w:ascii="Times
New
Roman"
w:hAnsi="Times
New
Roman"/><w:sz
w:val="24"/></w:rPr><w:delText>hey</w:delText></w:r></w:del><w:ins
w:id="5"
w:author="Author"
w:date="2014-08-13T10:08:00Z"><w:r
w:rsidR="00147CFE"><w:rPr><w:rFonts
w:ascii="Times
New
Roman"
w:hAnsi="Times
New
Roman"/><w:sz
w:val="24"/></w:rPr><w:t
xml:space="preserve">
that
helps
them</w:t></w:r></w:ins>
我使用了以下代码:
find = etree.XPath("//w:p//.//*[local-name() = 'delText']//text()" ,namespaces={'w':"http://schemas.openxmlformats.org/wordprocessingml/2006/main"})
list_of_deleted_words = (find(lxml_tree))
我怎么可能解决这个问题??
编辑:
我意识到问题仅在于其中包含大写字母的单词,诸如“She”、“He”之类的单词也会被拆分。
【问题讨论】:
-
好吧,从概念上讲,
delText不知道“单词”。您可以删除任何一段文本,包括空格。因此,试图找到提取的单词实际上是没有意义的。除非你很确定只删除完整的单词? -
部分词也可以删除,提取的很好。但在上述案例中,“他们”这个词被删除了。为什么它出现在单独的
标记中是另一个 OOXML 之谜-_- -
您的目标是提取单词(无论用户是否一次删除一个完整的单词),还是您的目标是提取用户删除的块?
-
是单词.." 他们" 应该算作一个单词而不是两个(我的代码目前正在这样做)..
标签: python xml xpath lxml openxml