2016-06-13 26 views
0

私は従業員のために歓迎文書を作成する "手作業"の手伝いを手伝ってくれる仕事をしています。Pythonを使用してdocxのテキストを置き換えます

私は何をしようとしていることである: 1)CSVからのセルの内容は、(ユーザー名、ファーストネーム、パスワード) 2ファイル抽出)セルの内容を取り、文字列を置換するには、[姓]、[ユーザー名]と[パスワード]をDOCXファイルに入力します。

""" Dependencies """ 
import csv 
import numpy as np 
import re 
import shutil 
import docx 
#import fileinput 

""" Open CSV and add usernames to list """ 
with open('UploadUsers.csv', 'rU') as csvfile: 
    readCSV = np.loadtxt(csvfile, delimiter=',', skiprows=1, dtype = 'str') 
    first_names = [] 
    usernames = [] 
    passwords = [] 

for row in readCSV: 
    username = row[1] 
    first_name = row[2] 
    password = row[5] 

    usernames.append(username) 
    first_names.append(first_name) 
    passwords.append(password) 

for username in usernames: 

    doc = "Free_Tracking_Manager_US.docx" 
    doc_copy = "Free_Tracking_Manager_US.docx."+username+".docx" 

    """ Make file copies """ 
    shutil.copy(doc, doc_copy) 

    """ Make changes to first name, username and password """ 

    document = docx.Document(doc_copy) 

    for paragraph in document.paragraphs: 
     if '[FirstName]' in paragraph.text: 
      print(first_name) 
     if '[Username]' in paragraph.text: 
      print(username) 
     if '[Password]' in paragraph.text: 
      print(password) 

    """ Save document """ 
    document.save(doc_copy) 

スクリプトがエラーなしで実行され、それが文書のコピーを作成しますが、文字列を置き換えるものではありません:

これはコードです。わからない問題がどこにあるか...

UPDATE:

がAbassが提案された変更を行いました。私が交換さ:

for paragraph in document.paragraphs: 
     if '[FirstName]' in paragraph.text: 
      print(first_name) 
     if '[Username]' in paragraph.text: 
      print(username) 
     if '[Password]' in paragraph.text: 
      print(password) 

で:

の操作を行います。

for paragraph in document.paragraphs: 
     if '[FirstName]' in paragraph.text: 
      print(first_name) 
      paragraph.text = paragraph.text.replace('[FirstName]',first_name) 
     if '[Username]' in paragraph.text: 
      print(username) 
      paragraph.text = paragraph.text.replace('[Username]',username) 
     if '[Password]' in paragraph.text: 
      print(password) 
      paragraph.text = paragraph.text.replace('[Password]',username) 

はまだ動作しません...

答えて

1

IIUCあなたは自分の存在を確認した後、キーワード文字列を交換しませんこの変更とそれは文字列を置き換える必要があります。

for paragraph in document.paragraphs: 
     if '[FirstName]' in paragraph.text: 
      print(first_name) 
      paragraph.text = paragraph.text.replace('[FirstName]',first_name) 
     if '[Username]' in paragraph.text: 
      print(username) 
      paragraph.text = paragraph.text.replace('[Username]',username) 
     if '[Password]' in paragraph.text: 
      print(password) 
      paragraph.text = paragraph.text.replace('[Password]',username) 
+0

ありがとうございます、まだ動作していません...ファイルをコピーしますが、docxのコンテンツは変更しません。 –

+0

あなたの質問をあなたの変更内容で更新してください。 – Abbas

+0

完了!それがうまくいくためには他に何が必要なのか教えてください! –

関連する問題