使用python RE替换Word文档中的字符串?

时间:2017-07-25 08:41:09

标签: python

所以我试图通过word文档来替换所有文本字符串' aaa' (仅举例)用一个来自用户输入的变量替换它,我一直在用stackoverflow上的一些答案抨击我的头脑来弄清楚并且遇到了我之前从未使用的正则表达式,在使用了一点教程之后我我似乎无法理解它。

这是我尝试过的所有代码示例,但似乎无法让python实际更改此Word文档中的文本字符串。

 from docx import Document
 import re

 signature = Document ('test1.docx')
 person = raw_input('Name?')
 person = person+('.docx')
 save = signature.save(person)


 name_change = raw_input('Change name?')
 line = re.sub('[a]{3}',name_change,signature)
 print line
 save
 for line in signature.paragraphs:
     line = re.sub('[a]{3}',name_change,signature)

 for table in signature.tables:
     for cell in table.cells:
        for paragraph in cell.paragraphs:
            if 'aaa' in paragraph.text:
                print paragraph.text
                paragraph.text= replace('aaa',name_change)

  save

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

for line in signature.paragraphs:
    line = re.sub('[a]{3}',name_change,signature)

上面的代码是多余的,因为您使用re.sub更新变量line,但它不会导致实际原点的更新,如下所示:

data = ['aaa', 'baaa']
for item in data:
    item = re.sub('[a]{3}', 't', item)

print(data)
#['aaa', 'baaa']  

此外,您正在迭代signature.paragraphs,但每次都只在re.sub上调用signature。尝试这样的事情:

signature = re.sub('[a]{3}', name_change, signature)
save