正規表現って普段書かなくなると、すぐ忘れちゃいますよね?
めちゃめちゃTipsですが、備忘録も兼ねて投稿します。
やりたいこと
- 掲題の通りですが、金額等の文字列の修正を想定しています。
- 例: 金額欄に
1,000.000
と入力されたときに、1,000,000
に修正したい。- ただし、
1,000.000.00
と入力されたときは1,000,000.00
にしたい。
- ただし、
- 「そんなケースに遭遇する?」と思われるかもしれませんが、例えばOCRシステム等ではあり得るかと思います。(私の場合、まさにこれ)
コード
import re
target_text = '1,000.000.00'
replace_rule = re.compile('\.(?!\d{2}$)')
text = replace_rule.sub(',', target_text)
これでいけました。
なお、このままだと例えば 1,000.0
は1,000,0
となってしまうので、ちゃんと3つ区切りのドットだけを置換したい場合は(そもそもそんなケースが有るかは不明ですが)
import re
target_text = '1.000.00.00'
replace_rule = re.compile('\.(\d{3})')
text = replace_rule.sub(r',\1', target_text)
でいけました。
以上です。この記事が世界の誰かの役に立てば幸いです