Pythonで文字列の前方一致を削除、抽出、置き換える
- 作成日: 2023-06-21
- 更新日: 2023-12-24
- カテゴリ: Python
Pythonで文字列の前方一致を削除、抽出、置き換え
Pythonで文字列の前方一致をやるにはstartswith()
メソッドを使います。
startswith()
の引数にマッチさせたい文字列を指定します。
s = 'aaabbbccc'
print(s.startswith('aaa')) # True
print(s.startswith('bbb')) # False
startswith()
の引数にはタプルも指定可能です。
タプルの中のいずれかの文字列にマッチしたらTrue
が返ってきます。
いずれにもマッチしなかったらFalse
を返します。
s = 'aaabbbccc'
print(s.startswith(('aaa', 'bbb', 'ccc'))) # True
print(s.startswith(('111', '222', '333'))) # False
前方一致を削除
前方一致を削除するにはre
モジュールのsub()
を使います。
import re
s = 'aaabbbccc'
print(re.sub('^aaa', '', s))
# bbbccc
sub()
の引数は
- 第1引数: マッチさせる正規表現
- 第2引数: 置き換え後の文字列
- 第3引数: 対象の文字列
になります。
正規表現の^aaa
の意味は「文字列先頭のaaa」へのマッチという意味になります。
あるいは文字列のメソッドのreplace()
を使います。
s = 'aaabbbcccaaa'
print(s.replace('aaa', '', 1))
# bbbcccaaa
replace()
の引数は
- 第1引数: 置き換え対象の文字列
- 第2引数: 置き換え後の文字列
- 第3引数: 置き換え回数
になります。
第3引数は普通は指定しませんがこれを1
にしておかないと、先頭だけじゃない文字列も削除されてしまいます。
ですので第3引数に1
を指定しておきます。
前方一致を抽出
re.match()
を使うと前方一致したオブジェクトを抽出できます。
import re
s = 'aaabbbccc'
m = re.match('^aaa', s)
print(m.group())
# aaa
前方一致を置き換える
前方一致を置き換えるにはre.sub()
を使うかreplace()
を使います。
import re
s = 'aaabbbccc'
print(re.sub('^aaa', 'AAA', s))
# AAAbbbccc
s = 'aaabbbcccaaa'
print(s.replace('aaa', 'AAA', 1))
# AAAbbbcccaaa
これは前方一致の文字列の削除の応用で、指定する文字列が空文字ではなく他の文字列であるという点だけが違います。
おわりに
今回はPythonで前方一致の文字列を削除、抽出、置き換えてみました。
なにか参考になれば幸いです。
🦝 < 前方確認!
🦝 < 進路よし!