データ分析の前処理の文字列処理などで区切り文字以前のものを削除して、区切り文字以降の文字列を残しておきたい、なんて時があります。ですがstr型の標準メソッドのsplitでそのまま区切ると区切り文字は残りません。
例
text = 'おはようございます。今日もいい天気ですね。' text.split('。')
<実行結果>
[‘おはようございます’, ‘今日もいい天気ですね’, ”]
こういう感じに区切り文字にした「。」が消滅してしまいます。まあ句読点の「。」とかならまだいいのですが、正規表現を用いている場合なんかだと区切り文字以降の数字が消えて文章が変になってしまうこともあります。
例
import re text = '70.I was short of cash, so I withdrew the $100 that I had deposited in my bank account last week.' re.split('\d+',text)
<実行結果>
[”, ‘.I was short of cash, so I withdrew the $’, ‘ that I had deposited in my bank account last week.’]
splitで区切り文字を残して文字分割するサンプルコード
こういう場合は以下のように記述することで区切り文字を残したまま文字列の分割を行うことができます。
text = '70.I was short of cash, so I withdrew the $100 that I had deposited in my bank account last week.' re.findall('.*?\d+|.*$',text)
<実行結果>
[’70’, ‘.I was short of cash, so I withdrew the $100’, ‘ that I had deposited in my bank account last week.’, ”]
text = 'おはようございます。今日もいい天気ですね。' re.findall('.*?。|.*$',text)
<実行結果>
[‘おはようございます。’, ‘今日もいい天気ですね。’, ”]
おまけ
ちなみに分割した文字列の一番目以降を結合した場合は以下のように記述します。
text = 'おはようございます。今日もいい天気ですね。' re.findall('.*?。|.*$',text) t_lists = re.findall('.*?。|.*$',text) t = '' for txt in t_lists[1:]: t+=txt
<実行結果>
今日もいい天気ですね。
こういう感じに区切り文字を残したまま最初の区切り文字以降の文字列がちゃんと残せています。
参照:https://www.haya-programming.com/entry/2018/03/22/175925
コメント