0

我希望我可以放弃历史,但请相信我:

  1. 我有几个人可以立即访问 MSWord 2007
  2. 我们正在尝试准备一个通用的 Word 文档,该文档可以在几个月内从一个人传递到另一个人,并且他们可以向其中“添加”新内容。

不管下面的答案是什么 - 无论它是多么可怕的想法,或者你可能有什么更好的想法,上面的答案都将保持不变......我已经走上了这条路:P。

  1. 我的“想法”是(在 Word 中)设置 XML 模式,以便我们可以“标记”特定内容区域的内容(例如项目编号、项目描述、项目词干、项目选项、项目答案等)
  2. 我在不到 6 个小时的时间里自学了 XML 架构,显然我是个糟糕的老师:我有 XML 架构文件,我已经将它导入 Word,我能够按照所有在线教程标记这些区域。 .
  3. 我希望保存到“XML”文件(来自 Word)并让它看起来像:
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

(只是从一个随机站点上拉下来,以证明我想从 word 文档中保存填充数据的 XML 结构)

希望然后我可以用 Python 解析,或者将 XML 文件发送给供应商,然后供应商可以将信息上传到数据库中(不 - 我们不能只上传到数据库 - 它必须从 Word 文档到XML 到供应商)。

问题:每当我将文件从 MSWord 2007 保存到 XML 时,它都会给我所有这些可怕的可怕的 XML 废话——我检查了是否可以解析它,希望找到嵌入的 XML 标记,然后我发现它们,但它被所有 Offices 标签/废话弄得乱七八糟,以至于解析它会浪费大量时间。

最后:我怎样才能让单词自动填写 XML 标记(通过自动我理解有人必须“选择文本”、“分配 XML”......更多关于“保存”到 XML 的内容)来自我开发的架构(或者我可以创建一个没有架构的示例 XML 树吗?)并导出准备上传/解析的内容?

感谢您阅读我的短篇小说:P(希望我足够清楚!)

-J

4

1 回答 1

1

如果数据与您提供的示例一样统一(即只有note元素,具有固定数量的字段),您可能可以在 Word 文档中使用一个大表,其中包含tofromheadingbody等列。然后,您可以使用此问题中描述的方法之一在 Python 中解析它并输出您的自定义 XML。由于.docx文件已经是 XML,这可能会使您的工作更简单,也可能不会。

如果数据将变得更复杂,一个想法可能是使用 Word 样式将文本映射到正确的标签。您可以为每个标签制作自定义样式,用户可以快速轻松地单击(并且可能具有不同的颜色和/或字体)。然后在解析文档时,您可以根据应用的段落样式过滤所有内容。不过,我认为这条路线会很痛苦。

另一种选择可能是以结构化语法(如YAML )编写文档,这很容易手动读/写,您只需将文件保存为纯文本即可解析,例如

# plaintext_export.txt
------------------
Notes:
- From: Somebody
  To: Somebody-else
  Heading: This is a heading
  Message: > 
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
    tempor incididunt ut labore et dolore magna aliqua. 

- From: Another guy
  To: Me
  Heading: Huh?
  Message: >
    Some other message content.

解析很简单:

>>> import yaml
>>> from pprint import pprint
>>> with open("plaintext_export.txt", 'r') as f:
...     data = yaml.load(f)
...
>>> pprint(data)
{'Notes': [{'From': 'Somebody',
            'Heading': 'This is a heading',
            'Message': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit
, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. \n',
            'To': 'Somebody-else'},
           {'From': 'Another guy',
            'Heading': 'Huh?',
            'Message': 'Some other message content.\n',
            'To': 'Me'}]}
于 2011-03-28T21:56:32.630 回答