2011-06-23 20 views
-5

リストの各要素を別のリストの同じ位置にある要素に置き換えるにはどうすればよいですか?私はこのようなものがうまくいくと思った:Pythonリストの置換

list1 = ['a', 'b', 'c', 'd'] 
list2 = ['a_replaced', 'b_replaced', 'c_replaced'] 
text = open(textfile, 'r') 
n = 0 
for line in text: 
    line = line[0:len(line)-1] 
    line.replace(col[n], outcol[n]) 
    print line 
    n + 1 

しかし、それは動作しません。私は間違って何をしていますか?

+2

ここで、あなたはcolとoutcolを宣言していますか?彼らはリスト1とリスト2になっていますか? – thegrinner

+2

'n 'をインクリメントすることを意味するなら、' n + = 1'と書く必要があります。しかし、私はあなたのプログラムが何をしたいのか理解しようとするのに苦労しています。 – vimukthi

答えて

0

replaceは新しい文字列を返します。 line = line.replace(col[n], outcol[n])が必要です。

3

5物事:

  • あなたは、私が実際にlist1list2あると仮定coloutcolを参照。
  • list1list2はサイズが異なるテキストファイルが長い4行以上であれば、それはn + 1が実際に行っていない
  • ラインをクラッシュしますので、これは、あなたがn上の境界を確認していない
  • をクラッシュします何か、それはなければならないn += 1
  • line.replaceは、新しい文字列を返します。

line = line.replace(...)に変更してください。

あなたが達成しようとしていることはわかりません。このプログラムは、1行目のaを2行目のa_replaced,bと置き換え、b_replaced,c行3の行内に、c_replaceddd_replacedと置き換えます。 your'reが各ライン上のすべての置換を適用しようとした場合

replacements = [('a', 'a_replaced'), ('b', 'b_replaced'), ('c', 'c_replaced'), ('d', 'd_replaced')] 
text = open(textfile, 'r') 
n = 0 
for line in text: 
    if n >= len(replacements): 
     break 
    print line[:-1].replace(replacements[n][0], replacements[n][1]) 
    n += 1 

はしかし、ここに方法は次のとおりです。

replacements = [('a', 'a_replaced'), ('b', 'b_replaced'), ('c', 'c_replaced'), ('d', 'd_replaced')] 
text = open(textfile, 'r') 
for line in text: 
    line = line[:-1] 
    for oldtext, newtext in replacements: 
     line = line.replace(oldtext, newtext) 
    print line 

または、上記のプログラムの短いバージョン:

replacements = [('a', 'a_replaced'), ('b', 'b_replaced'), ('c', 'c_replaced'), ('d', 'd_replaced')] 
text = open(textfile, 'r').read() 
for oldtext, newtext in replacements: 
    text = text.replace(oldtext, newtext) 
print text, 
0

「doesnの置き換え文字列を変更すると、変更された文字列のコピーが返されます。これは動作するはず

list1 = ['a', 'b', 'c', 'd'] 
list2 = ['a_replaced', 'b_replaced', 'c_replaced', 'd_replaced'] 
text = open(textfile, 'r') 
for line in text: 
    for index, old in enumerate(list1): 
     line = line.replace(old, list2[index]) 
    print line 
text.close() 

line = line.replace(col[n], outcol[n]) 
0

私はあなたが提供したコードから言うことは困難であるが、これは、あなたが達成しようとしているものだと思います。明確にするコメント

関連する問題