2016-10-19 21 views
1

sedで必要なことをすることさえ可能かどうか分かりません。リストの文字列に文字を置き換えて、それぞれのコピーを作成します。

ファイルの文字列をリストの別の文字列に置き換え、各バージョンごとに別々のコピーを作成したいと考えています。例えば

、元のファイルがあります:

apple dog orange 

は、私は別の単語のリストをdogを交換したいです。すなわち、ネコ、ウサギ、アヒル。 これは、元のファイルのコピーを作成します。元のファイルのコピーは、それぞれ異なる変更が加えられています。

FILE1.TXT(オリジナルファイル) - apple dog orange FILE2.TXT - apple cat orange File3.txt - apple rabbit orange File4.txt - apple duck orange

私は、単一の検索と置換するためにセッドを使用することができましたファイル:

sed -i '' 's/dog/cat/g' *.html 

リストから置き換えてそれぞれの固有のコピーを作成する方法が必要です。

私はOSXです。前にも述べたように、sedはおそらくPythonのツールではないでしょうか?私はこれを行うための任意の提案に開いています。

ありがとう

+0

本当に悪い質問、コーディングする方法を学ぶことの喜び道に沿って試していると理解している – perreal

答えて

2

正規表現を使用してPythonで行うことができます。あなたが正規表現

import re 

in_file = 'File1.txt' 
out_file = 'File2.txt' 
with open(filename, 'r') as in_f: 
    s = f.read() # Reads whole file. Be careful for large files 
    s = re.sub('dog', 'cat', s) 
    with open(out_file, 'w') as out_f: 
     f.write(s) 

を使用することができます

import re 
import os 

filename = '/path/to/filename.txt' 
with open(filename, 'r') as f: 
    text = f.read() 

names = ['cat', 'rabbit', 'duck'] 
for i, name in enumerate(names): 
    new_text = re.sub(r'dog', name, text) 
    base, ext = os.path.splitext(filename) 
    with open('{}_{}{}'.format(base, i, ext), 'w') as f: 
     f.write(new_text) 
+0

私はどのように好きですかあなたはまたそれがちょうど 'dogfish'ではなく' dogfish'であることを確認しました。よくやった! – kameranis

+0

ありがとうございます(とkameranis)。私は実際には「ドッグフード」の場合でも交換する必要があります。アイデアは、異なる地域のURLの一部を置き換えることです。 – user2382925

+0

ごめんなさい早く投稿するつもりはありませんでした。 HTMLファイルのURLの一部を置き換えることを考えています: 'www.example。 – user2382925

1

あなたはできるだけ多くの置換を行うためにforループで全体を囲むことができますが、

1

をしたいとあなたは、単にメソッドを置き換える文字列を使用してそれを行うことができます

import string 
f = open("file1") 
text = f.read() 
list_of_words = ['cat','rabbit','duck'] 
num =2 
for word in list_of_words: 
    new_text = string.replace(text,"dog",word,1) 
    f_new = open("file"+str(num),"w") 
    f_new.write(new_text) 
    f_new.close() 
    num +=1 

入力: ファイル1

apple dog orange 

出力:FILE2:

apple cat orange 

出力:ファイル3:

apple rabbit orange 

出力:FILE4:

apple duck orange 
関連する問題