Pythonでカンマ区切り文字列をスマートに分割!空白も削除してリスト化
CSVデータやログファイルなど、カンマで区切られた文字列を扱う機会はPython開発において非常に多いです。しかし、カンマの後に余分な空白が含まれていたり、空の要素が含まれていたりすると、後続の処理が煩雑になります。ここでは、Pythonの**split()メソッドとリスト内包表記**を組み合わせて、カンマ区切り文字列をきれいにリスト化する方法を解説します。
目次
split()メソッドの基本
Pythonの文字列には、指定した区切り文字で文字列を分割し、リストとして返すsplit()メソッドが用意されています。
text = "apple,orange,banana"
items = text.split(',')
print(items) # 出力: ['apple', 'orange', 'banana']
空白の削除と空要素の除外
カンマの後に空白がある場合や、連続するカンマによって空の要素が生成される場合があります。
text_with_spaces = " apple, orange, banana "
items_with_spaces = text_with_spaces.split(',')
print(items_with_spaces) # 出力: [' apple', ' orange', ' banana ']
text_with_empty = "red,,blue,green,"
items_with_empty = text_with_empty.split(',')
print(items_with_empty) # 出力: ['red', '', 'blue', 'green', '']
これらを解決するために、strip()メソッドとリスト内包表記を組み合わせます。
空白を削除し、空要素を除外してリスト化する
data_str = " item1 ,item2, , item3 ,item4 "
# 1. splitでカンマ区切りに分割
# 2. リスト内包表記で各要素の前後にある空白をstrip()で削除
# 3. 削除後、空文字列でなければリストに追加
cleaned_list = [item.strip() for item in data_str.split(',') if item.strip()]
print(cleaned_list)
# 出力: ['item1', 'item2', 'item3', 'item4']
解説
-
data_str.split(','): まず、カンマで文字列を分割し、分割された要素のリストを得ます。この段階では、空白が含まれていたり、空文字列が存在する可能性があります。 -
[item.strip() for item in ... if item.strip()]: これはリスト内包表記です。-
for item in ...: 分割された各要素をitemとしてループします。 -
item.strip(): 各itemに対してstrip()メソッドを適用し、前後の空白を取り除きます。 -
if item.strip():strip()によって空白を取り除いた結果が空文字列でなければ(つまり、何らかの有効な文字が残っていれば)リストに追加します。空文字列はブールコンテキストでFalseと評価されるため、この条件で簡単に除外できます。
-
このテクニックは、データのクリーニングやパース処理において非常に強力です。
reモジュールを使ったより柔軟な分割
より複雑な区切り文字(例: カンマとスペースが混在する場合)に対応するには、正規表現モジュールのre.split()が役立ちます。
import re
text_complex = "apple, orange ; banana,grape"
# カンマまたはセミコロン、その前後の空白で分割
# re.splitは空文字列を生成しないため、strip()とifは不要な場合が多い
items_re = re.split(r'[,;\s*]+', text_complex)
print(items_re)
# 出力: ['apple', 'orange', 'banana', 'grape']
状況に応じて、split()とリスト内包表記、またはre.split()を使い分けることで、効率的かつ堅牢な文字列分割処理を実現できます。
■らくらくPython塾 – 読むだけでマスター
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座




