Python

【Python】splitで区切り文字を残して文字分割するサンプルコード

この記事は約3分で読めます。

 

データ分析の前処理の文字列処理などで区切り文字以前のものを削除して、区切り文字以降の文字列を残しておきたい、なんて時があります。ですが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

 

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

タイトルとURLをコピーしました