Как обновить содержимое в существующем текстовом документе, используя python - PullRequest
0 голосов
/ 17 октября 2018

У меня есть существующий текстовый документ в следующем формате.

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

Я хочу открыть этот текстовый документ и обновить значения [target] и [step], используя приведенное ниже значение, используя python.

target = "Это объективно"

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 голосов
/ 18 октября 2018

Попробуйте это:

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') 
...