• ベストアンサー

pythonで命令にない文字列の置換が起こります。

画像のpythonのコードでは文字列trueを参照しながら誤ったスペルの文字列 f の要素 f[i] をtrue[i]で置き換えようとしているのですが、なぜかtrueの要素が変換されてしまいます。 どうしたら直りますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • _kappe_
  • ベストアンサー率68% (1581/2304)
回答No.3

この例だと、iの値が10のときにf.replace("a", "t")が実行されます。 つまり、"It raised abc reason."の中の"a"という部分を全て"t"で置き換えているので、"abc"の部分の"a"以外にも"raised"や"reason"の中の"a"も置き換えてしまっているわけです。 この場合、置き換えたい部分だけを置き換えるにはreplaceは不向きです。他のやり方を考えてください。

hf-sbf5
質問者

お礼

親切な回答をありがとうございました。よくわかりました。

その他の回答 (2)

回答No.2

pythonは使ったことがないので、的外れだったらすいません。 他の言語でも共通の認識として 予約語を使うな!というものがあり、 "true" ← この文字を使ってはいけないのです。 (ちなみ反意語は、false) これ、booleanオブジェクトの一部なので、 好き勝手に使う変数名としては、正しく動いたとしても、 使うべきじゃないので、それも原因の一つとは 考えられます。 #ただ、これが原因だとも確信がないので、的外れの可能性は  かなりあるので、さらっと聞き流してもらってもOKです。

hf-sbf5
質問者

お礼

予約語を使わなければ間違いが発生しにくいというのは、もっともなご指摘だと思いました。回答ありがとうございます。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

>なぜかtrueの要素が変換されてしまいます。 何をもって「trueの要素が変換されている」と判断されたのでしょうか? 少なくとも添付画像のコードと結果では、そういう判断はできないのですけど。 とりあえずはreplace()の仕様の理解が一歩足りないというのはわかりますけど。

hf-sbf5
質問者

お礼

回答ありがとうございます。