2016-05-25 11 views
1

textfile2.txtの単語 "example"をtextfile1.txtの単語リストに置き換えて、リストがなくなるか、すべての "example"がすべて置き換えられて表示されるまでしたい完成したテキスト全体Pythonでフルテキストファイルを印刷

どうすればよいですか?

textfile1.txt

user1 
user2 

textfile2.txt

URL GOTO=https://www.url.com/example 
TAG POS=1 TYPE=BUTTON ATTR=TXT:Follow 

URL GOTO=https://www.url.com/example 
TAG POS=1 TYPE=BUTTON ATTR=TXT:Follow 

現在のコード:それは私を与える

with open('textfile1.txt') as f1, open('textfile2.txt') as f2: 
    for l, r in zip(f1, f2): 
     print(r[:r.find('/example') + 1] + l) 

結果:

URL GOTO=https://www.instagram.com/user1 

user2 

目標:ここ

URL GOTO=https://www.url.com/user1 
TAG POS=1 TYPE=BUTTON ATTR=TXT:Follow 

URL GOTO=https://www.url.com/user2 
TAG POS=1 TYPE=BUTTON ATTR=TXT:Follow 
+1

1つのリストが使い尽くされるとすぐにZipが終了します。したがって、1ファイルに2行、2ファイルに5行は2パスを意味します。あなたの望むように1つだけが置き換えられます。 2ndは* example *を見つけられませんので、f1の2行目を返します。 –

答えて

3

は私のソリューションです:

更新
with open('t1.txt') as f1, open('t2.txt') as f2: 
    url_info = f2.read().split('\n\n') 
    users = f1.read().split('\n') 
    zipped_list = zip(users, url_info) 
    for item in zipped_list: 
     print item[1].replace('example', item[0])+"\n" 

このニーズインポートitertools

import itertools 
with open('t1.txt') as f1, open('t2.txt') as f2: 
    url_info = f2.read().split('\n\n') 
    users = [u for u in f1.read().split('\n') if u] 
    zipped_list = list(itertools.izip(url_info, itertools.cycle(users)))  
    for item in zipped_list:   
     print item[0].replace('example', item[1])+"\n" 

出力:

URL GOTO=https://www.url.com/user1 
TAG POS=1 TYPE=BUTTON ATTR=TXT:Follow 

URL GOTO=https://www.url.com/user2 
TAG POS=1 TYPE=BUTTON ATTR=TXT:Follow 

URL GOTO=https://www.url.com/user1 
TAG POS=1 TYPE=BUTTON ATTR=TXT:Follow 
+0

textfile2の 'example'の数がtextfile1の単語の数より多い場合、これは正しく機能しません。 質問は、textfile2.txtの単語 "example"を、textfile1.txt **の単語のリストで置き換えたい、またはリストがなくなるまで**すべての "example"がすべて置き換えられた後にしたい完成したテキスト全体を表示します。 – mng

+0

はい、あなたは正しいです。私は自分のコードを更新しています – bertramlau