2016-06-14 7 views
1

私が言うのラインがある/home/hiperboltに存在testingと呼ばれるファイルを持っている:行の文字列を検索し、別の文字列と行全体を置き換える

nameserver 127.89.87.3 

私が探すためにコードの一部をしたいがnameserverで始まり、現在、私のコードで何が起こる

nameserver 8.8.8.8 

で行全体を置き換えるのラインは、それがなるように、それが唯一のネームサーバの一部を置き換えることです:

nameserver 8.8.8.8 127.89.87.3 

代わりの

nameserver 8.8.8.8 

答えて

3

これは、必要に応じて正規表現なしで行うことができます。

with open('/home/hiperbolt', 'r') as f: 
    lines = [] 
    for line in f: 
     if line.startswith('nameserver'): 
      lines.append('nameserver 8.8.8.8') 
     else: 
      lines.append(line) 

with open('/home/hiperbolt', 'w') as f: 
    f.write('\n'.join(lines)) 
+0

これは簡単です。ありがとうございます! – hiperbolt

2

あなただけのファイルのテキストコンテンツにre.sub()を使用して、バックファイルに置き換えるテキストを書き込むことができます。

In [30]: filedata 
Out[30]: 'nameserver 127.89.87.3\nsearch example.com\n' 

In [31]: re.sub(r'nameserver\s+.*', 'nameserver 8.8.8.8', filedata) 
Out[31]: 'nameserver 8.8.8.8\nsearch example.com\n' 
関連する問題