前提・実現したいこと
pythonで文字列置換する際、文字列に含まれる対象が複数含まれたときに、
n番目の一致のみを、置換したい。
発生している問題・エラーメッセージ
すべて置換する方法か、n番目「まで」を置換する方法しか分からず、
遠回りの方法しか思いついていない。
該当のソースコード
現在のソースコードです。
sample変数の文字列に含まれる「XXX」のうち、
2番目に出現するもののみを、「xxx」に置換します。
- n-1番目までの一致を一時的に「TEMP」として置換
- 1.に対し、1番目の一致を置換
- 2.に対し、「TEMP」としたものをもとの文字に戻す置換
という処理をしており、回りくどい気がしています。
python
1sample = 'abcXXXdefXXXghiXXXjkl' #置換する対象の文字列 2 3n = 2 #この番目に一致したもののみ置換したい 4b = 'XXX' #置換前 5a = 'xxx' #置換後 6t = '_TEMP_' #一時変換用の意味のない文字列 7 8result = sample.replace(b,t,n-1).replace(b,a,1).replace(t,b,n-1) 9print(result) 10 11# abcXXXdefxxxghiXXXjkl
もっとスマートに置換する方法があれば教えてください。
補足情報(FW/ツールのバージョンなど)
python3.7
回答6件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/13 12:01 編集