ユーニックス総合研究所

  • home
  • archives
  • python-zenpo-icchi

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で前方一致の文字列を削除、抽出、置き換えてみました。
なにか参考になれば幸いです。

🦝 < 前方確認!

🦝 < 進路よし!