Search and replace in .docx using Python

A simple PoC to get you going:

#!/usr/bin/env python2
import zipfile as zf
import StringIO as si
import sys

candidates = ["word/document.xml"]

sio = si.StringIO()
with zf.ZipFile(sio, "w", compression=zf.ZIP_DEFLATED) as zio:
    with zf.ZipFile(sys.argv[1], "r") as za:
        for infile in za.namelist():
            indata = za.read(infile)
            if infile in candidates:
                indata = indata.replace("token", "replacement")
            zio.writestr(infile, indata)

with open("modified_{}".format(sys.argv[1]), "w") as oufile:
    oufile.write(sio.getvalue())