2017-04-09 31 views
2

私はテキストファイルに文字列のリストを持っています。弦は朝、夜、太陽、月です。私がしようとしているのは、これらの文字列の1つを別の文字列に置き換えることです。たとえば、私は午前中にそれを取り出して交換するために朝を入力します。ストリングが明らかにリストに入っているときに、「builtins.ValueError:list.remove(x):x not in list」というエラーが表示されます。ファイル内の文字列を新しい文字列に置き換える

他の方法で同じ結果を達成するより良い方法がある場合は、教えてください。助けてくれてありがとう!ここで

+0

別のファイルを作成せずにファイルを編集することを意味しますか? –

+2

まず、 'list()'が組み込み関数であるため、変数 'list'を呼び出さないでください。第2に、 'list'のあなたの文字列の最後に改行' \ n 'があ​​ります。 'remove'を試みる前にそれらを取り除くべきです。 – DyZ

答えて

1

はいくつかのアイデアです:

  • str.replace()関数は、文字列、s.replace(y, z)を交換する最も簡単な方法です。

  • re.sub()関数を使用すると、パターンを検索し、文字列で置き換えることができます。re.sub(y, z, s)

  • fileinputモジュールでは、インプレースを変更できます。

ここでそれを行うための一つの方法です:

import fileinput 
import re 

with fileinput.input(files=('file1.txt', 'file2.txt'), inplace=True) as f: 
    for line in f: 
     print(re.sub(y, z, line)) 

ここで別のアイデア:代わりに、処理ライン・バイ・ラインの

  • 、ただ1つの文字列としてファイル全体を読み込みますそれを修正し、それを書き戻します。たとえば、

import re 

with open(filename) as f: 
    s = f.read() 
with open(filename, 'w') as f: 
    s = re.sub(y, z, s) 
    f.write(s) 
-1

は、おそらくあなたは、Python replace()方法を探していますか?

str = file.readlines() 
str = str.replace(y, z) #this will replace substring y with z within the parent String str 
0

src.txtで保存しますTXTと仮定すると:

@echo off 
setlocal enabledelayedexpansion 
set filename=%1 
set oldstr=%2 
set newstr=%3 

for /f "usebackq" %%i in (%filename%) do (
    set str=%%i 
    set replace=!str:%oldstr%=%newstr%! 
    echo !replace! 
) 

Useage:

replace.bat src.txt morning afternoon > newsrc.txt 

Windowsで
morning 
night 
sun 
moon 

、あなたはreplace.batに保存し、このバッチスクリプトを使用することができます

またはgrepWin

sedまたはgawkを使用する方が簡単です。

sed -i "s/morning/afternoon/g" src.txt 
関連する問題