首页 > 解决方案 > 有没有办法从python中的word中获取合并字段?我正在使用 get_merge_fields()

问题描述

我的程序从 docx 获取所有合并字段,查找一些特定的单词并替换它们。

但我需要合并字段与插入到文档中的顺序相同。

如果我有这个内容的话:

<< Market.Name >> 有 << Market.Employees >> 并在 << Market.ClosingHour >> 关闭,而 << Hotel.Name >> 有 << Hotel.Employees >> 并在 << Hotel.ClosingHour 关闭>>。<< PetShop.Name >> 所有者是 << PetShop.Owner >> 。

当我使用 doc 中的 get_merge_fields() 时,它为我提供了所有字段,但我希望它们按以下顺序排列:

{'Market.Name'、'Market.Employees'、'Market.ClosingHour'、'Hotel.Name'、'Hotel.Employees'、'Hotel.ClosingHour'、'PetShop.Name'、'PetShop.Owner'}

我需要它来创建名称、员工、ClosingHour 等具有相同顺序的表单。

标签: python

解决方案


我已经解决了这个问题。get_merge_fields() 方法返回一个集合,它是一个无序的数据结构,所以我改变了 get_merge_fields() 方法,如下所示:

def get_merge_fields(self, parts=None):
    if not parts:
        parts = self.parts.values()
    fields = []
    for part in parts:
        for mf in part.findall('.//MergeField'):
            fields.append(mf.attrib['name'])
    return fields

推荐阅读