如何使用python更新现有Word文档中的内容

时间:2018-10-17 19:03:08

标签: python-3.x ms-word docx python-docx

我有以下格式的现有Word文档。

1. Test Case Specification Identifier

    [test case number] 55-01-01
    [title] Login with default 

    [revision history] 

    2. Test Items
     [objective] 

    3. Execution
    [step 1]    ;# Non-executable description
      [step 1.1]        ;# Executable Step Level 2 or more

我想打开这个word文档,并使用python使用以下值更新[目标]和[步骤]。

objective =“这是客观的”

Steps = {“ step1”:[“ step1.1”,“ step1.2”],“ step2”:[“ step2.1”]}

包含上述数据后,输出文档如下所示。


1. Test Case Specification Identifier
[test case number] 55-01-01
[title] Login with default 

[revision history] 

2. Test Items
 [objective] 
This is objective

3. Execution
[step 1]    Step 1
  [step 1.1]    Step 1.1
  [step 1.2]    Step 1.2
[step 2]    Step 2
  [step 2.1]    Step 2.1

能请你帮忙吗?

1 个答案:

答案 0 :(得分:0)

尝试一下:

from docx import Document
import re

document = Document(docx='existing.docx')
objective = "This is objective"

steps = ["step 1", "step 1.1", "step 1.2", "step 2", "step 2.1"]    

# read current document contents
for paragraph in document.paragraphs:

    if '[objective]' in paragraph.text:
        paragraph.text += objective

    for step in steps:
        indent = 1
        if re.search(r"{}\]".format(step), paragraph.text):
            print step, paragraph.text
            if '.' in step:
                indent += 1
            paragraph.text = '{}[{}]\t{}'.format('\t'*indent, step, step.title())
            steps.remove(step)

# add remaining steps not in existing document    
for step in steps:
    indent = 1
    if '.' in step:
        indent += 1
    document.add_paragraph('{}[{}]\t{}'.format('\t'*indent, step, step.title()))

document.save('output.docx')