【问题标题】:Parse Word Document in Python在 Python 中解析 Word 文档
【发布时间】:2015-02-26 07:39:16
【问题描述】:

我想将 word 文档转换为文本。所以我用了一个脚本。

import win32com.client 

app = win32com.client.Dispatch('Word.Application') 
doc = app.Documents.Open(r'C:\Users\SBYSMR10\Desktop\New folder (2)\GENERAL DATA.doc') 
content=doc.Content.Text
app.Quit()
print content

我有以下结果:

现在我想将此文本转换为包含其所有项目的列表。我用过

content = " ".join(content.replace(u"\xa0", " ").strip().split())

编辑

当我这样做时,我得到:

它不是一个列表。问题是什么?那个大点字符是什么?

【问题讨论】:

  • 什么不起作用?你得到了什么?
  • “没用”是什么意思?

标签: python string ms-word


【解决方案1】:

Word 文档不是文本,它们是文档:它们具有控制信息(如格式设置)和文本。如果忽略控制信息,文本就毫无用处。

因此,您必须深入了解如何导航文档的控制结构以找到您感兴趣的文本,然后获取该结构的文本内容。

注意:您会发现 Word 非常复杂。如果可以,请同时考虑以下两种方法:

  • 在 Word 中将 Word 文档另存为 HTML。它会丢失一些格式,但列表将保持不变。 HTML 比 Word 更易于解析和理解。

  • 将文档保存为 OOXML(至少从 Office 10 开始存在,扩展名为 .docx)。这是一个包含 XML 文档的 ZIP 存档。 XML 再次比完整的 Word 文档更容易解析/理解,但比 HTML 版本更难。

【讨论】:

  • 如果我的数据后面总是跟一个已知字符串,那么我该如何获取呢?
  • 您的问题是列表项。 HTML 示例:<ul><li>a</li><li>b</li></ul>。正文是ab。如果忽略文档结构,如何知道哪些字符属于哪个项目?
  • 但在代码结果中,我只能看到大点字符和文档中的单词。因此,如果我可以将其转换为列表,我相信我可以做我想做的事
  • 没有其他方法可以获取我的数据吗?
  • 尝试找到“大点字符”的字符代码(在文档的前几个字符上尝试ord())然后使用该字符拆分字符串(使用unichr()进行转换将代码转换为字符串)。这适用于没有嵌套列表的非常简单的 word 文档。
【解决方案2】:

现在我想将此文本转换为包含其所有项目的列表。我用过

content = " ".join(content.replace(u"\xa0", " ").strip().split())

它不是一个列表。有什么问题?

.join 方法always returns a string。它希望您传递一个列表,然后将该列表与给定的分隔符(在您的情况下为“”)连接起来。

除此之外,Aaron Digulla 所说的。

【讨论】:

    【解决方案3】:

    在此链接及其 cmets 中查看此帖子:Converting Word documents to text (Python recipe)

    这个帖子也可能有用:python convert microsoft office docs to plain text on linux

    【讨论】:

      【解决方案4】:

      你可以逐行解析word文档。它并不优雅,当然也不漂亮,但它确实有效。这是我在 python 3.3 中完成的类似操作的 sn-p。

      import os
      directory='your/path/to/file/'
      file='yourword.doc'
      doc=open(directory+file,'r+b')
      for line in doc:
          line2=str(line)
          print(line2))
      

      我使用正则表达式来获得我需要的东西。但是此代码将读取您的 word 文档的每一行(格式和所有内容)并将其转换为您可以处理的漂亮字符串。不确定这是否有帮助(这篇文章已有几年历史了),但至少它解析了 word 文档。然后,只需在写入 txt 文件之前删除您不想要的字符串即可。

      【讨论】:

      • 这对你真的有用吗?看起来像查看word文件的冒险方式。只是文本,没有格式吗?
      • 我相信我使用的是较旧的 .doc 格式而不是 .docx (如问题所问),如果您采用该格式,则格式将保存为字节字符串,而文本是保存为纯文本。我不能 100% 确定这适用于较新的格式。但原则上它应该可以工作。
      猜你喜欢
      • 2011-10-05
      • 2013-07-13
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多