読み込み中...

Pythonのsplit()関数を完全解説!10個の実用的なサンプルコード付き

Pythonのsplit()関数の詳細な使い方とサンプルコードを表す図 Python
この記事は約13分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

Pythonを学んでいるあなた。

文字列の扱いについて悩んでいませんか?そんな時に役立つのが文字列を分割するsplit()関数です。

この記事を読むことで、Pythonのsplit()関数の全貌が明らかになります。

split()関数の基本的な使い方から応用例、そしてカスタマイズ方法まで、初心者にもわかりやすいように詳しく解説しています。

サンプルコードも10個掲載しているので、実際のコードを見ながら理解を深めることができます。

Pythonで文字列を自在に操りたいあなたのための、必見の内容です。

●Pythonとsplit()関数とは

Pythonは、高水準なプログラミング言語の一つで、コードが読みやすく、書きやすいことで知られています。

その中でも、文字列操作の機能は非常に強力で、split()関数もその一部です。

split()関数は、指定した区切り文字を使って文字列を分割し、その結果をリストとして返す機能を持ちます。

例えば、カンマで区切られた文字列から、各要素を分割してリストにするといった使い方が考えられます。

●split()関数の基本的な使い方

○サンプルコード1:基本的な分割

text = "Pythonは楽しく学べるプログラミング言語です"
words = text.split()
print(words)

このコードでは、文字列”Pythonは楽しく学べるプログラミング言語です”をスペースで分割しています。

split()関数に引数を指定しない場合、デフォルトでスペースが区切り文字となります。

実行結果は次のようになります。

['Pythonは楽しく学べるプログラミング言語です']

見ての通り、元の文字列がスペースを境にしてリストの各要素となっています。

●split()関数での文字列の分割方法

次に、特定の区切り文字を指定して文字列を分割する方法を見てみましょう。

さらに、区切り文字が存在しない場合にどうなるかも確認してみます。

○サンプルコード2:区切り文字を指定した分割

text = "Python,Java,C++,JavaScript"
languages = text.split(",")
print(languages)

このコードでは、文字列”Python,Java,C++,JavaScript”をカンマで分割しています。

split()関数に引数”,”を渡すことで、カンマを区切り文字として文字列を分割しています。

その結果、次のようなリストが得られます。

['Python', 'Java', 'C++', 'JavaScript']

元の文字列の各部分がリストの要素となり、カンマを境にして分割されているのが確認できます。

○サンプルコード3:区切り文字がない場合の分割

text = "Pythonプログラミング"
languages = text.split(",")
print(languages)

このコードでは、文字列”Pythonプログラミング”をカンマで分割しようとしています。

しかし、元の文字列中にカンマが存在しないため、結果的に分割が行われません。

そのため、split()関数の出力結果は以下のようになります。

['Pythonプログラミング']

区切り文字が元の文字列中に存在しない場合、分割が行われず元の文字列がそのままリストに格納されることがわかります。

●split()関数での高度な分割方法

次に、split()関数を用いた高度な分割方法を見てみましょう。

正規表現を使った分割や、分割数を指定した分割などを扱います。

○サンプルコード4:正規表現を使った分割

import re

text = "Python3.8, Java15, C++20, JavaScript ES6"
languages = re.split(r',\s*', text)
print(languages)

このコードでは、正規表現を用いて文字列を分割しています。

具体的には、カンマとその後に続く任意の空白を区切り文字としています。

その結果、次のようなリストが得られます。

['Python3.8', 'Java15', 'C++20', 'JavaScript ES6']

正規表現を使うことで、複雑なパターンの区切り文字にも対応できることがわかります。

○サンプルコード5:分割数を指定した分割

text = "Python,Java,C++,JavaScript,Ruby,Go"
languages = text.split(",", 3)
print(languages)

このコードでは、カンマで区切る分割数を指定しています。

具体的には、最初の3つのカンマで区切って分割を行います。その結果、次のようなリストが得られます。

['Python', 'Java', 'C++', 'JavaScript,Ruby,Go']

分割数を指定することで、元の文字列を特定の数で分割することが可能になります。

これにより、より柔軟な文字列操作が可能になります。

●split()関数のエラーと対処法

split()関数の使用中によく発生するエラーとその対処法について見ていきましょう。

具体的には、空の文字列を分割しようとしたときと、非文字列オブジェクトを分割しようとしたときについて解説します。

○サンプルコード6:空の文字列を分割した場合のエラーとその対処法

empty_text = ""
words = empty_text.split(" ")
print(words)

このコードでは、空の文字列をスペースで分割しようとしています。

空の文字列を分割すると何が起きるのか、結果を見てみましょう。

['']

結果として、空の文字列が1つ格納されたリストが返されます。

これは、split()関数が対象文字列内の区切り文字を探して分割するという動作原理からくるものです。

対象文字列が空であっても、split()関数は空のリストではなく、空の文字列を1つ含むリストを返します。

空の文字列を分割する場合にはこの性質に注意が必要です。

○サンプルコード7:非文字列オブジェクトを分割した場合のエラーとその対処法

number = 123456
numbers = number.split(",")
print(numbers)

このコードでは、数値をカンマで分割しようとしています。

しかし、split()関数は文字列に対してのみ使用可能であり、数値に対して使用するとエラーが発生します。

具体的には、実行すると次のようなエラーメッセージが表示されます。

AttributeError: 'int' object has no attribute 'split'

このエラーは、split()関数を非文字列オブジェクトに対して使用したときに発生します。

split()関数を使用する際には、対象が文字列であることを確認する必要があります。

数値や他のオブジェクトを分割する必要がある場合は、まず適切な文字列への変換を行うことが重要です。

●split()関数を用いた応用例

ここでは、split()関数を用いたいくつかの応用例を紹介します。

CSVデータのパースやログファイルの解析、HTMLタグの除去など、具体的な問題を解決するためのサンプルコードを見てみましょう。

○サンプルコード8:CSVデータのパース

csv_data = "Python,Java,C++,JavaScript,Ruby"
languages = csv_data.split(",")
for language in languages:
    print(language)

このコードでは、カンマ区切りのCSVデータをパース(解析)しています。

CSVデータは頻繁に使用されるデータ形式で、split()関数を使うことで簡単に各データ要素にアクセスできます。

この例では、カンマを区切り文字として使用し、文字列を分割しています。

コードを実行すると、CSVデータが分割されて以下のように出力されます。

Python
Java
C++
JavaScript
Ruby

上記のように、各プログラミング言語が改行で分けられて表示されています。

CSVデータはカンマで要素が分割されていることが一般的で、split()関数を使うと各要素をリストとして取り出すことができます。

これにより、データの各要素に対して処理を行うことが容易になります。

○サンプルコード9:ログファイルの解析

ログファイルは、システムやアプリケーションの動作履歴を記録するために使われます。

ログファイルから特定の情報を抽出したいとき、split()関数は非常に便利なツールになります。

例えば、次のような形式のログエントリがあるとします。

log_entry = "[2023-07-02 10:30:00] INFO: User login successful. User: John Doe."

このログエントリから時間とユーザー名を抽出したいとしましょう。

まずは時間を抽出してみます。

log_entry = "[2023-07-02 10:30:00] INFO: User login successful. User: John Doe."
log_parts = log_entry.split("] ")
time_stamp = log_parts[0][1:]
print(time_stamp)

このコードでは、まずログエントリを”] “で分割しています。

これにより、タイムスタンプとその他のログ情報が別々のリスト要素として得られます。

その後、タイムスタンプが含まれている要素(log_parts[0])から先頭の”[“を削除するためにスライスを用いています。

これで時間情報を抽出することができました。

2023-07-02 10:30:00

次にユーザー名を抽出してみましょう。

user_info = log_parts[1].split(": ")[2]
user_name = user_info.split(".")[0]


print(user_name)

このコードでは、”: “で分割した後の3つ目の要素(indexは2)を取り出し、それを”.”で再度分割してユーザー名を抽出しています。

分割後のリストから特定の要素を取り出すことで、ログエントリから必要な情報を抽出することができます。

John Doe

これらの例からも分かるように、split()関数は様々なデータ分析タスクで大変有用です。

○サンプルコード10:HTMLタグの除去

split()関数を使用してHTMLタグを除去することも可能です。

下記のコードは、HTMLタグを取り除き、テキストデータのみを抽出する例です。

html_text = "<html><body><h1>Title</h1><p>This is a paragraph.</p></body></html>"
text_parts = html_text.split(">")
for i in range(len(text_parts)):
    text_parts[i] = text_parts[i].split("<")[0]
plain_text = " ".join(text_parts)
print(plain_text)

このコードでは、まず”>”でHTML文字列を分割しています。

次に、各部分を”<“で分割し、その1つ目の要素を取り出すことでHTMLタグを除去しています。

最後に、全てのテキスト部分を結合して、HTMLタグのないプレーンテキストを作成しています。

結果は以下の通りです。

Title This is a paragraph. 

これで、HTMLタグが除去されたプレーンテキストを取得することができました。

ただし、この方法は非常にシンプルなHTMLに対してのみ有効であり、複雑なHTMLやJavaScriptを含むWebページに対しては、専用のHTMLパーサーを使用することをお勧めします。

●split()関数をカスタマイズする方法

Pythonのsplit()関数は、特定のセパレーターを基に文字列を分割しますが、このセパレーターはカスタマイズすることが可能です。

また、split()関数は最大分割数も指定することが可能で、これにより分割の回数を制限することができます。

まず、セパレーターのカスタマイズについて見てみましょう。

下記のコードは、スペースではなく、ハイフンをセパレーターとして文字列を分割する例です。

text = "Python-is-an-awesome-language"
words = text.split("-")
for word in words:
    print(word)

このコードでは、ハイフンを使って文字列を分割しています。

この例では、文字列 “Python-is-an-awesome-language” からハイフンを基に分割を行い、結果を表示しています。

コードを実行すると、次の出力が得られます。

Python
is
an
awesome
language

分割された文字列の各部分が改行で分けられて表示されます。

このように、split()関数は任意のセパレーターに対応しており、様々な文字列操作に活用することができます。

次に、最大分割数の指定について見てみましょう。

split()関数の第二引数に整数を渡すことで、分割を行う回数を制限することができます。

下記のコードは、セパレーターとしてスペースを用い、最大分割数を2に設定しています。

text = "Python is an awesome language"
words = text.split(" ", 2)
for word in words:
    print(word)

このコードでは、最初の2つのスペースで文字列を分割しています。

つまり、元の文字列は最大で3つの部分に分割されます。

コードを実行すると、次の出力が得られます。

Python
is
an awesome language

最初の2つのスペースで文字列が分割され、残りの部分はそのままの一つの部分として出力されます。

このように、split()関数は最大分割数の指定を通じて、より高度な文字列操作を可能にします。

まとめ

今回の記事では、Pythonのsplit()関数について詳細に解説しました。

この関数は、文字列を特定のセパレーターで分割するための非常に便利なツールです。

特に大量のテキストデータを扱う際には、その力を存分に発揮します。

様々なサンプルコードを通じて、split()関数の基本的な使い方から、CSVデータのパースやログファイルの解析、HTMLタグの除去など、実際の問題解決に活用する方法までを学びました。

また、カスタマイズ方法についても触れ、任意のセパレーターを用いた分割や、最大分割数の指定など、split()関数の高度な活用法についても理解を深めました。

ここで紹介したテクニックを活用すれば、あらゆる種類の文字列操作に対応することが可能になります。

split()関数はその柔軟性と便利さから、Pythonプログラミングにおける必須のスキルと言えるでしょう。

しかし、ここで紹介した内容はsplit()関数の一部に過ぎません。

更に深い理解を得るためには、さまざまなケースでの実際の使用経験が必要です。

これからも積極的にsplit()関数を使って、その力を実感してみてください。

本記事が、split()関数の理解と活用に向けた一助となれば幸いです。

最後までご覧いただき、ありがとうございました。