• ベストアンサー

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

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

  • Python
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
  • _kappe_
  • ベストアンサー率68% (1523/2217)
回答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% (1622/5659)
回答No.1

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

hf-sbf5
質問者

お礼

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

関連するQ&A

  • エクセルの文字列置換マクロに関するご相談

    下方のマクロを実行することにより、 文字列リストの内容に基づいて、 別シート(作業)内の文字列を変換することができます。 文字列からコード値へ変換することを目的にマクロを埋め込んだのですが、 別シート(作業)の文字列をコード値に変換した際、3桁くぎりのコード値が並んだ場合に、 自動で数値として認識されてしまいます。 ※別シート(作業)のセルを文字列し設定しても発生します。 プログラムで回避手段があるようでしたらご教示いただければ幸いです。 例)文字列リストシート A B さる 10 ぞう 15 ごりら 101 きりん 102 わに 103 かば 104 マクロ実行前の作業シート A さる,ぞう ごりら ごりら,きりん,わに さる,ごりら マクロ実行後の作業シート A 10,15 101 101102103 10101 上記マクロ実行後のシートの3~4行目のように、 カンマが取れることを防ぎ、文字列として代入したい所存です。 <マクロ> Sub 文字列リストに基づき連続して置換する() i = 2 Do x1 = Sheets("文字列リスト").Cells(i, 1) x2 = Sheets("文字列リスト").Cells(i, 2) Sheets("作業").Cells.Replace _ What:=x1, Replacement:=x2, _ SearchOrder:=xlByColumns, MatchCase:=True i = i + 1 Loop Until Sheets("文字列リスト").Cells(i, 1) = "" End Sub ご教示いただければ幸いです。 よろしくお願いいたします。

  • 文字列の置換

    VB6で開発してます。 以下のようなことをやりたいのですが、 効率のよい方法はないものでしょうか? <やりたいこと>  文字列1の中にある『_』と同じ位置にある  文字列2の文字を『_』に置き換えたい。  [変換前]   文字列1:12_3456_   文字列2:ABCDEFGH  [変換後]   文字列1:12_3456_   文字列2:AB_DEFG_ どなたかわかる方がいらっしゃったら教えて下さいm(_ _)m 

  • Pythonで変数自体を文字列として扱うには

    Pythonで変数自体を文字列として扱う関数はありますか? 以下は、xがそのような関数である場合の例です。 python = 123 >>>print python >>>123 >>>print x(python) >>>python

  • Pythonでの文字列の操作

    とあるデータをPythonを使って整形したいのですが、文字列の操作でつまずいて居りますのでご教示いただけたらと思います。 編集したい文字列は以下のように"|"(パイプ)で7つのカラムに区切られています。 1|Jun 19, 2014 06:00:15.586099000|192.168.100.225|62763|192.168.100.255|8612|60 2|Jun 19, 2014 06:00:20.636389000|192.168.11.100|1900|249.255.255.250|1900|332 3|Jun 19, 2014 06:00:20.636879000|192.168.11.100|1900|219.255.255.250|1900|323 4|Jun 19, 2014 06:00:20.636879000|192.168.11.100|1900|209.255.255.250|1900|397 … 2行目が日付と時刻を示していることが分かるかと思います。それ以外の行の意味は気にしなくて結構です。 私が変更したいのは2行目のみで、以下のように変更したいのです。 1|Jun 19, 2014|06|192.168.100.225|62763|192.168.100.255|8612|60 2|Jun 19, 2014|06|192.168.11.100|1900|249.255.255.250|1900|332 3|Jun 19, 2014|06|192.168.11.100|1900|219.255.255.250|1900|323 4|Jun 19, 2014|06|192.168.11.100|1900|209.255.255.250|1900|397 … このように、日付と時間をパイプで区切り、更に時刻の部分の「分」以下の部分を削除したいのです。 上のデータをファイル入力として、下のデータをファイル出力したいのですが、いろいろ調べてもなかなか実現できません。 どのようなPythonスクリプトを書けばよいのか教えていただけたらと思います。 解説サイト等を紹介してくださっても嬉しいのですが、より具体的なコードを書いてくださった方にベストアンサーにさせていただこうと思います。

  • 文字列置換

    文字列置換 htmlのbody内のタグではない(画面に表示される)特定の文字列を別の文字列に置き換えるコードはどう書けばいいのでしょうか?

  • ページ内文字列の置換について

    BODY内の全要素を参照して、特定文字列を置換するスクリプトを教えてください。 具体的に言うと、ブログなどで既に投稿済みの各記事などに必ずと言っていいほど入力している「■」を「◇」に替えたいのです。 いろいろ検索してみましたが、replace()かな? と言う程度は探れても、そこから先に進めない知識しかございません。 どうぞよろしくお願い申し上げます。

  • 「python 文字列の切り取り」について教えてください

    現在、学校のほうでpythonを使っているんですが、文字列の部分切り取りという方法がよくわりません。 切り取りの例としては ipfw add allow icmp from 1.2.3.0/24 to any icmptypes 0 ipfw add allow icmp from 1.2.3.0/24 to any icmptypes 0,4,18 という文字列がそれぞれあったら 上の文字列なら『0』、下の文字列なら『0,4,18』の部分だけ取り出すといった感じです

  • 文字列の置換について

    こんにちは、kanpoと申します。 今回文字列の置換についての質問をさせていただきたいと思います。 やりたいことは以下のとおりです。 たとえば、あるStringデータに”あかさた#1728なはま#7586やらわ”などという 文字列が入ってるとします。 この文字列のなかから"#1728"と"#7586"を検索しそれぞれを #1728 → test #7586 → test2 と変換し最終的にもとのStringデータを ”あかさたtestなはまtest2やらわ”としたいのです。 説明が長くなってしまい申し訳ありませんがよろしくご教授ください。 環境は下記のとおりです。 RedhatLinux6.2J apache-1.3.12-0jp1.i386 php-3.0.15_i18n_ja-0vl2.i386

    • ベストアンサー
    • PHP
  • OpenOfficeで文章から特定文字列を抽出する

    OpenOfficeを利用しています。 かなり異例なのですが、 ・文章の中に特定の文字列があるかを検索→ある場合はTrue、ない場合はFalce ・Trueの場合VLOOKUPでその文字列を参照として指定された数値を返す このようなことをやりたいのですが、なにかうまくやる方法はないでしょうか? マクロの知識がないのでできれば関数でお願いします。 そのような方法がなければ文章中の特定の文字列を抽出、その抽出した文字を参照としてVLOOKUPで指定された数値を返す、という方法でも構いません。 例として画像を添付しておきます。 例と言うよりは、実際に作ってるものなのですが…… A列からE列までをVLOOKUPで使う参照表とし、G列の文字列を検索値として、D列の数値をI列の結果として返したい、ということです。 よろしくお願いします。

  • 最終列の列番号を列文字に変換することはできますか?

    例えばaaaがある列を探し、その列番号は4で列文字がDですが、 列番号から列文字をvbaで取得する方法はありますか? Sub Sample() Dim i As Long Dim Colmoji As String i = Rows(1).Find(What:="aaa", LookAt:=xlWhole).Column Colmoji = i 'ここで列文字に変換したい MsgBox i & "の列文字は" & Colmoji & "です" End Sub このようなコードを作ってみたのですが列文字に変換する方法がわかりません。