前提・実現したいこと
(例)python3で、とある文字列の中から、正規表現で特定の文字列を順番にひっかけ、すべて置換する機能を実現したいと考えています。
やりたいことは下記のイメージです。
これをそのままやろうとすると、if文で、すべてのメンバに対し、正規表現でひっかけて作ったリストから、
順番に置換していく方法しか思いつかなかったのですが、可能であればクラスメンバの名前を使って、
そのクラスメンバの値で置換する、という形にしたいと思っています。
クラスメンバの名前は、self.dict.keys()や.values()でとってこれると聞いたので、以下のように作ってみましたが
正常に動きません。
上の図のようなことを実現するには、どうすればよいのでしょうか。
また、実現方法として、もっと良いやり方などがあればご教示いただけますと幸甚に存じます。
発生している問題・エラーメッセージ
動かすと下記のようなエラーが出てきます。引数が足りないようなのですが、selfを除いた引数の数は
あっているように思います。
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-41-a3da41bd26bf> in <module> 1 aaa = tmp_Data ----> 2 aaa.replace_doller(re_text, tmp_str) TypeError: replace_doller() missing 1 required positional argument: 'original'
該当のソースコード
class tmp_Data(object): def __init__(self): self.host = "aaa" self.ip = "10.123.145.30" def replace_doller(self, rep_list, original): print(self.__dict__.items()) # for rep_str in rep_list: # if rep_str in self.__dict__.keys(): # original.replace("$HOST$", self.__dict__.) tmp_str = "host:$HOST$\nIP:$IP$" re_pattern = "$.*?$" re_text = re.findall(re_pattern, tmp_str) re_text aaa = tmp_Data aaa.replace_doller(re_text, tmp_str)
試したこと
jupyterで、ネット上で調べたことをテストしてみた。
補足情報(FW/ツールのバージョンなど)
python.3.7
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/16 21:56
2019/12/16 21:59
2019/12/16 22:34
2019/12/16 23:29
2019/12/17 08:34
2019/12/18 13:30
2019/12/18 15:42
2019/12/18 15:44