RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 563537
Accepted
Трезвый
Трезвый
Asked:2020-09-07 02:01:04 +0000 UTC2020-09-07 02:01:04 +0000 UTC 2020-09-07 02:01:04 +0000 UTC

蟒蛇3。如何打开(获取数据)office文档(doc、odt等...)

  • 772

请告诉我如何 在 python3 中打开 odt、doc、docx、rtf 等办公文件并从中获取数据。至少很奇怪。

事实上,odt 和 docx 本质上是众所周知的档案,理论上您可以解压它们并查看 content.xml 文件(如果我没记错的话),但可能有更现代或更方便的方法。

我发现的只是创建 ods 表。

我找到了模块uno、pyoo 并且到处都描述了如何创建表,但我没有找到如何从 office 文档中获取数据。

任务是遍历目录(子目录)中存在的所有文件,查找或分析您需要的内容并将结果输出到单独的文件。

现在这是在 bash 中部分实现的,我想在 python3 中重写所有内容。

告诉我或演示如何搜索。

python-3.x
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. tutankhamun
    2020-09-07T03:14:11Z2020-09-07T03:14:11Z

    好吧,随便几个库:

    1. https://pypi.python.org/pypi/ezodf
    2. https://github.com/eea/odfpy

    当然,通过OpenOffice的服务来工作是一种比较正确的武士方式,但这至少需要一个“无头”的OpenOffice,但不一定可用。此外,在我看来,OpenOffice 服务在处理大量文件时的性能会令人失望,但您将获得完整的功能。

    顺便说一句,请记住,在使用 OpenOffice 时,您必须以 Java API 文档为指导,并使其适应 Python

    • 2
  2. Best Answer
    Трезвый
    2020-09-07T06:07:00Z2020-09-07T06:07:00Z

    我会将其格式化为答案,这样我就不会搜索评论,如果图坦卡蒙不介意,如果你不介意,那么将它添加到你的答案中,我会删除我的。

    因此,问题是使用ezodf模块解决的(不是很多它的文档)。安装的时候,如果你同时有 2 和 3 版本的 python,请小心,对于第三个,我安装了 python3 setup.py install like this 。

    为清楚起见,一个小代码示例

    import ezodf
    odt = ezodf.opendoc('/home/user/python/text.odt')
    list=[]
    # Запускаем цикл for  и перебираем все что нашли в файле)
    for i in odt.body:
      if i.text == None:
        print('no')
      else:
        list.extend(re.findall(r"[\w']+", i.text.lower()))
    

    让我解释一下,我使用i.text 而不是i.plaintext()来捕捉几行具有None值的行(显然是一些服务数据,我不明白),只是plaintext()将空元素添加到列表中并在那一刻在我看来,通过文字 会更快,但我可以在早上重新考虑)

    在这里list.extend(re.findall(r"[\w']+", i.text.lower())) - 我附加到现有列表列表或什至如此,从而扩展现有列表列表。我选择所有带有正则表达式的单词(文档中的每个单词都放入列表中),对它们应用小写字母,仅此而已。

    所以这只是一部分,因此可能看起来不太好,还有很多可以添加的,但至少现在清楚了如何阅读文档。

    感谢 图坦卡蒙的提示。

    • 0

相关问题

  • 查询在 sqlite 中不起作用:LIKE '%?%'—ProgrammingError:提供的绑定数量不正确

  • 如何从csv文件python3中读取指定行数

  • 为什么 None 作为程序的结果被添加

  • 获取 VKontakte 群组的所有帖子

  • python3中的int设备

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何停止编写糟糕的代码?

    • 3 个回答
  • Marko Smith

    onCreateView 方法重构

    • 1 个回答
  • Marko Smith

    通用还是非通用

    • 2 个回答
  • Marko Smith

    如何访问 jQuery 中的列

    • 1 个回答
  • Marko Smith

    *.tga 文件的组重命名(3620 个)

    • 1 个回答
  • Marko Smith

    内存分配列表C#

    • 1 个回答
  • Marko Smith

    常规赛适度贪婪

    • 1 个回答
  • Marko Smith

    如何制作自己的自动完成/自动更正?

    • 1 个回答
  • Marko Smith

    选择斐波那契数列

    • 2 个回答
  • Marko Smith

    所有 API 版本中的通用权限代码

    • 2 个回答
  • Martin Hope
    jfs *(星号)和 ** 双星号在 Python 中是什么意思? 2020-11-23 05:07:40 +0000 UTC
  • Martin Hope
    hwak 哪个孩子调用了父母的静态方法?还是不可能完成的任务? 2020-11-18 16:30:55 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    Arch ArrayList 与 LinkedList 的区别? 2020-09-20 02:42:49 +0000 UTC
  • Martin Hope
    iluxa1810 哪个更正确使用:if () 或 try-catch? 2020-08-23 18:56:13 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5