【Python】split()関数を使って文字列を分割する!
Pythonで使って文字列を分割するにはsplit()関数を使用します。
split()関数とはある文字列をここで区切りたい場合、その分割した文字列を配列で取得することができる関数であり、区切りたい時などのように自分のルールに基づいて文字列を取得することができます。
しかし、それぞれの文字列はリストとして返されるようになりますので、文字列の分割後はリストの要素を取得するように文字列も取得するようにしましょう。
また、文字列を分割する関数はsplit()関数以外にもrsplit()関数やsplitlines()関数などがありますので場合に応じて使い分けていくようにしましょう。
今回はPythonのsplit()関数を使って文字列を分割する方法について以下の内容で解説していきます。
⚫︎ 空白で文字列を分割する場合
⚫︎ ある文字で文字列でを分割する場合
⚫︎ ある文字列で文字列を分割する場合
⚫︎ 区切る回数を指定する場合
⚫︎ 分割する文字列が見つからない場合
⚫︎ 逆から文字列を分割する方法
⚫︎ 改行で文字列を分割する方法
目次
split()関数とは
split関数()とは、ある文字列をここで区切りたい場合、その分割した文字列を配列で取得することができる関数となります。
例えば、「※」という文字で区切りたいと言う自分のルールを作成すると、「※」に基づいて文字列を区切ることができます。
また、区切られた文字列はリストで返されるようになります。
split()関数の書き方
Pythonのsplit関数の書き方は下記のようになります。
1 |
string.split(区切り文字, 最大区切り数) |
パラメータ
⚫︎ 区切り文字:
文字列を分割する時の文字を文字列で指定する
(ここの文字で分割される)
⚫︎ 最大区切り数:
実行する分割の数を数値で指定する
split()関数のパラメータに区切り文字を指定することで、区切り文字を対象に文字列を分割します。
また、最大区切り数を指定することで、区切る回数を設定して文字列を分割することができます。
文字を分割するサンプルコード
split()関数を使った文字を分割するサンプルコードを紹介します。
空白で文字列を分割する場合
空白で文字数を区切るには指定する必要はありません。
split()関数を呼び出すことで空白で自動的に空白で区切られます。
例
1 2 3 4 5 6 7 |
str1 = "Java Python JavaScrip Switf C# Ruby PHP" x = str1.split() print('・split()関数使用前') print(str1) print('・split()関数使用後') print(x) |
出力結果
・split()関数使用前
Java Python JavaScrip Switf C# Ruby PHP
・split()関数使用後
[‘Java’, ‘Python’, ‘JavaScrip’, ‘Switf’, ‘C#’, ‘Ruby’, ‘PHP’]
また空白を2つ開けた場合もで綺麗に区切ることができます。
例
1 2 3 4 5 6 7 |
str1 = "Java Python JavaScrip Switf C# Ruby PHP" x = str1.split() print('・split()関数使用前') print(str1) print('・split()関数使用後') print(x) |
出力結果
・split()関数使用前
Java Python JavaScrip Switf C# Ruby PHP
・split()関数使用後
[‘Java’, ‘Python’, ‘JavaScrip’, ‘Switf’, ‘C#’, ‘Ruby’, ‘PHP’]
このように区切る文字を設定しないでsplit()関数を呼び出すと、全角、半角の空白で区切ることができます。
ある文字で文字列でを分割する場合
ある文字で文字列でを分割する場合はsplit()関数の区切り文字に文字を指定します。
例
1 2 3 4 5 6 7 |
str = "Java/Python/JavaScript/Swift/C#/Ruby/PHP" x = str.split("/") print('・split()関数使用前') print(str) print('・split()関数使用後') print(x) |
出力結果
・split()関数使用前
Java/Python/JavaScript/Swift/C#/Ruby/PHP
・split()関数使用後
[‘Java’, ‘Python’, ‘JavaScript’, ‘Swift’, ‘C#’, ‘Ruby’, ‘PHP’]
スラッシュという文字で文字列を区切って表示しています。
ある文字列で文字列を分割する場合
ある文字列で文字列を分割する場合は区切り文字に文字列を指定します。
例
1 2 3 4 5 6 7 |
str1 = "Java区切りPython区切りJavaScript区切りSwift区切りC#区切りRuby区切りPHP" x = str1.split("区切り") print('・split()関数使用前') print(str1) print('・split()関数使用後') print(x) |
出力結果
・split()関数使用前
Java区切りPython区切りJavaScript区切りSwift区切りC#区切りRuby区切りPHP
・split()関数使用後
[‘Java’, ‘Python’, ‘JavaScript’, ‘Swift’, ‘C#’, ‘Ruby’, ‘PHP’]
「区切り」という文字列で文字列が区切られて表示されています。
区切る回数を指定する場合
区切る回数を指定する場合は、split()関数の第2パラメータである最大区切り数を指定します。
しかし、区切る対象の文字が回数よりオーバーしてしまうと、残りの区切る対象の文字では区切られなくなります。
例
1 2 3 4 5 6 7 |
str1 = "Java*Python*JavaScript*Switf*C#*Ruby*PHP" x = str1.split("*", 3) print('・split()関数使用前') print(str1) print('・split()関数使用後') print(x) |
出力結果
・split()関数使用前
Java*Python*JavaScrip*Switf*C#*Ruby*PHP
・split()関数使用後
[‘Java’, ‘Python’, ‘JavaScript’, ‘Switf*C#*Ruby*PHP’]
split()関数に最大区切り数を設定することによって区切る回数を指定して文字列を区切ることができます。
その為、「Switf*C#*Ruby*PHP」は一つの文字列として表示されています。
分割する文字列が見つからない場合
分割する文字列が見つからない場合を見てみます。
例
1 2 3 4 5 6 7 |
str1 = "Java/Python/JavaScript/SwitfC#/Ruby/PHP" x = str1.split("*", 3) print('・split()関数使用前') print(str1) print('・split()関数使用後') print(x) |
出力結果
・split()関数使用前
Java/Python/JavaScript/SwitfC#/Ruby/PHP
・split()関数使用後
[‘Java/Python/JavaScript/SwitfC#/Ruby/PHP’]
split()関数で指定した区切り文字が文字列内に見つからない場合はリストでそのまま返すようになります。
その為、「Java/Python/JavaScript/SwitfC#/Ruby/PHP」は一つの文字列として表示されています。
逆から文字列を分割する方法
逆から文字を分割するにはrsplit()関数を使用します。
rsplit()関数はsplit()関数の逆バージョンであり、左から分割するsplit()関数に対して、右から分割する関数になります。
例
1 2 3 4 5 6 7 |
str1 = "kotlin$Python$$erl$Switf$C#$Ruby$PHP" x = str1.rsplit("$", 4) print('・rsplit()関数使用前') print(str1) print('・rsplit()関数使用後') print(x) |
出力結果
・rsplit()関数使用前
kotlin$Python$$erl$Switf$C#$Ruby$PHP
・rsplit()関数使用後
[‘kotlin$Python$$erl’, ‘Switf’, ‘C#’, ‘Ruby’, ‘PHP’]
rsplit()関数を使用することによってそ右から文字を区切られました。
最大区切り数が4回であるため、「kotlin$Python$$erl」は一つの文字列として表示されています。
改行で文字列を分割する方法
改行で文字列を分割するにはsplitlines()関数を使用します。
split()関数で区切り文字に改行文字を指定して文字列を区切ることもできますが、改行で分割するならばパラメータを設定する必要がないのでsplitlines()関数を使ったほうがいいでしょう。
例
1 2 3 4 5 6 7 |
str1 = "kotlin\nPython\nPerl\nSwitf\nC#\nRuby\nPHP" x = str1.splitlines() print('・splitlines()関数使用前') print(str1) print('・splitlines()関数使用後') print(x) |
出力結果
・splitlines()関数使用前
kotlin
Python
Perl
Switf
C#
Ruby
PHP
・splitlines()関数使用後
[‘kotlin’, ‘Python’, ‘Perl’, ‘Switf’, ‘C#’, ‘Ruby’, ‘PHP’]
splitlines()関数によって改行コードで文字列が区切られて表示されています。
今回のポイント
split()関数で文字列を分割
⚫︎ Pythonで文字列を分割するにはsplit()関数を使用する
⚫︎ split()関数を使用するにはパラメータである区切り文字や最大区切り数を指定する
⚫︎ 空白で文字列を分割するにはsplit()関数をパラメータなしで使用する
(空白は全角半角何個入れても分割される)
⚫︎ ある文字で文字列を分割するにはsplit()関数のパラメータである区切り文字に区切りたい文字を指定する
⚫︎ ある文字列で文字列を分割するにはsplit()関数のパラメータである区切り文字に区切りたい文字列を指定する
⚫︎ 区切る回数を指定するにはsplit()関数のパラメータである区切る回数を指定する
(区切る対象の文字が回数よりオーバーすると、残りの文字では区切らない)
⚫︎ 分割する文字列が見つからない場合はsplit()関数は文字列をそのままリストで返す
⚫︎ 逆から文字を分割するにはrsplit()関数を使用する
⚫︎ 改行で文字列を分割するにはsplitlines()関数を使用する
(split()関数でも改行文字を指定して文字列を区切ることもできるが、splitlines()関数はパラメータを設定する必要がないので楽)
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。