テクノロジー 開発 非公開: Python での Split() メソッドの使用方法

Python での Split() メソッドの使用方法

このチュートリアルでは、 Python の Split() メソッド を使用して文字列を文字列のリストに分割する方法を学びます。

Python 文字列を操作する場合、いくつかの組み込み文字列メソッドを使用して、大文字への変換、文字列の並べ替えなど、文字列の変更されたコピーを取得できます。そのようなメソッドの 1 つは、Python 文字列を文字列のリストに分割する .split() です。これについては、コーディング例で詳しく学びます。

チュートリアルが終わるまでに、次のことを学習していることになります。

  • .split() メソッドの仕組み
  • sep パラメーターと maxsplit パラメーターを使用して分割をカスタマイズする方法

さぁ、始めよう!

Python での Split() メソッドの使用方法
Python での Split() メソッドの使用方法

Python の Split() メソッドの構文

有効な文字列に対して Python の split() メソッドを使用するための一般的な構文は次のとおりです。

 string.split(sep, maxsplit)

# Parameters:
sep, maxsplit

# Returns:
A list of strings

ここで、 文字列に は任意の有効な Python 文字列を指定できます。

sep パラメーターと maxsplit パラメーターは両方ともオプションです。

  • sep は、 文字列を分割する区切り文字を示します。文字列として指定する必要があります。
  • maxsplit は、文字列を何回分割するかを指定する整数です。

オプションのパラメータを指定しない場合は、デフォルト値が使用されます。

  • sep 値を明示的に指定しない場合、空白がデフォルトの区切り文字として使用されます。
  • maxsplit の値を指定しない場合、デフォルトは -1 になります。これは、区切り文字が出現する たび に文字列が分割されることを意味します。

構文を平易な言葉で表現すると、次のようになります。

split() メソッドは、パラメータ sep で指定された セパレータ の出現時に文字列 maxsplit の回数を 分割します

Python の split() メソッドの構文を学習したので、いくつかの例のコーディングに進みましょう。

Python での Split() メソッドの使用方法
Python での Split() メソッドの使用方法

Python 文字列を文字列のリストに分割する

マシンに Python 3 がインストールされている場合は、Python REPL で次のコード スニペットを実行することで、このチュートリアルでコーディングできます。

REPL を開始するには、ターミナルから次のコマンドのいずれかを実行します。

 $ python
$ python -i

▶️ の Python エディターでこれらの例を試すこともできます。

この例では、py_str は Python 文字列です。パラメータを指定せずに py_str の .split() メソッドを呼び出して、出力を観察してみましょう。

 py_str = "Learn how to use split() in Python"
py_str.split()

# Output
['Learn', 'how', 'to', 'use', 'split()', 'in', 'Python']

上で見たように、文字列は 空白 が出現する たび に分割されます。

Python での Split() メソッドの使用方法
Python での Split() メソッドの使用方法

区切り記号の出現に応じて Python 文字列を分割する

#1 。最初の例として、区切り文字として二重アンダースコア (__) を使用して文字列 py_str を分割してみましょう。

 py_str = "All__the__best"
py_str.split(sep='__')

# Output
['All', 'the', 'best']

#2 別の例を見てみましょう。ここで、 py_str は 3 つの文があり、それぞれがピリオド (.) で終了します。

 py_str = "I love coding. Python is cool. I'm learning Python in 2022"
py_str.split(sep='.')

# Output
['I love coding', ' Python is cool', " I'm learning Python in 2022"]

▶️ この文字列に対して .split() メソッドを呼び出すと、 '.' 区切り文字として使用すると、上のコード セルに見られるように、結果のリストには 3 つの文が含まれます。

#3 いくつか質問してみましょう:

  • 文字列内に区切り文字がまったく存在しない場合はどうなりますか?
  • この場合、分割はどのように行われるのでしょうか?

以下に例を示します。

アスタリスク (*) の発生時に py_str 分割しようとしますが、これは発生しません。

 py_str = "This line contains no asterisk."
py_str.split(sep='*')

# Output
['This line contains no asterisk.']

この場合は分割ができないため、結果のリストには文字列全体が含まれます。

次のセクションでは、テキスト ファイルの内容に対して split() メソッドを使用する方法を見ていきます。

Python での Split() メソッドの使用方法
Python での Split() メソッドの使用方法

Python ファイルの内容を分割する

Python でテキスト ファイルを操作する場合、処理を容易にするために、区切り文字に基づいてファイルの内容を分割する必要がある場合があります。

サンプルのテキスト ファイルを次に示します。

Python ファイルの内容を分割する
Python ファイルの内容を分割する

以下のコード スニペットは、サンプル テキスト ファイルの内容で分割を使用する方法を示しています。

 with open('sample.txt') as f:
  content = f.read()
  str_list= content.split(sep='...')
  for string in str_list:
    print(string,end='')

上記のコードは次のことを行います。

  • コンテキスト マネージャー with 使用して、テキスト ファイル「sample.txt」を開いて操作します。
  • ファイル オブジェクト f .read() メソッドを使用して、ファイルの内容を読み取ります。
  • 区切り記号の省略記号 (…) が出現した時点でコンテンツをリスト str_list に分割します。
  • str_list をループして各文字列にアクセスし、それを出力します。

これが出力です。

 # Output
This is a sample text file
It contains info on
Getting started with <a href="https://.com/pcap-certification/">programming in Python</a>
According to the 2022 StackOverflow Developer Survey
Python is one of the most-loved programming languages
So what are you waiting for? Start learning!

練習として、テキスト ファイルの内容を任意の区切り文字で分割してみることができます。

Python 文字列をチャンクに分割する

文字列を 1 回分割すると、2 つのチャンクが得られます。 2回に分割すると3つになります。

📋 一般に、文字列を K 回分割すると、 K + 1 チャンクが得られます。

これを以下に示します。

#1 maxsplit 1 に設定します。区切り文字を指定していないため、デフォルトでは空白で分割が行われます。

 py_str = "Chunk#1  I'm a larger chunk, Chunk#2"
py_str.split(maxsplit=1)

# Output
['Chunk#1', "I'm a larger chunk, Chunk#2"]

リストの 2 番目のチャンクに空白が含まれている場合でも、分割は maxsplit 値 1 によって制御されるため、分割は行われません。

#2 maxsplit 値を 2 に増やして、次の例で分割がどのように発生するかを観察してみましょう。

 py_str = "Chunk#1 Chunk#2 I'm one large Chunk#3, even though I contain whitespaces"
py_str.split(maxsplit=2)

# Output
['Chunk#1',
 'Chunk#2',
 "I'm one large Chunk#3, even though I contain whitespaces"]

前の例と同様に、maxsplit 値によって分割の数が決まります。 3 つのチャンクが得られ、最初と 2 番目に空白が出現した後に分割されます。

#3 maxsplit 区切り文字の出現数よりも大きい値に設定するとどうなりますか?

次のコード セルでは、文字列にカンマが 4 つしか含まれていない場合、 maxsplit を 8 に設定します。

 py_str = "There, are, only, 4, commas"
py_str.split(maxsplit=8)

# Output
['There,', 'are,', 'only,', '4,', 'commas']

ここで、split メソッドは、カンマの 4 つすべての出現で py_str を分割します。 maxsplit を -1 より小さい値 (-7 など) に設定しようとしても、分割は区切り記号が出現するたびに行われます。

次に、学んだことをすべてまとめて、両方の sep maxsplit パラメーターを使用してみましょう。

Python 文字列をセパレータでチャンクに分割する

#1 。カンマ (,) が出現したときに文字列 py_str 3 つのチャンクに分割する必要があるとします。これを行うには、メソッド呼び出しで sep 値を ‘,’ に設定し、 maxsplit 値を 2 に設定します。

 py_str = "Chunk#1, Chunk#2, I'm one large Chunk#3, even though I contain a ,"
py_str.split(sep = ',',maxsplit=2)

# Output
['Chunk#1', ' Chunk#2', " I'm one large Chunk#3, even though I contain a ,"]

出力に見られるように、区切り文字の最初の 2 つの出現時に分割が 2 回発生します。

#2 。区切り文字 sep 必ずしも特殊文字である必要はありません。これは、前に使用した二重アンダースコアのような特殊文字のシーケンスである場合もあれば、部分文字列である場合もあります。

文字列 ‘learn’ を sep 引数として設定し、 maxsplit のさまざまな値に対して分割がどのように発生するかを見てみましょう。ここでは、 maxsplit 2 に設定します。

 py_str = "You need to learn data structures, learn algorithms, and learn more!"
py_str.split(sep = 'learn',maxsplit=2)

# Output
['You need to ', ' data structures, ', ' algorithms, and learn more!']

#3 。文字列 ‘learn’ が出現するすべての部分で py_str を分割したい場合は、 maxsplit パラメータを指定せずに sep = 'learn' を設定して、この .split() メソッドを呼び出すことができます。これは、以下のコード セルに示すように、 maxsplit 値を明示的に -1 に設定することと同じです。

 py_str = "You need to learn data structures, learn algorithms, and learn more!"
py_str.split(sep = 'learn',maxsplit=-1)

# Output
['You need to ', ' data structures, ', ' algorithms, and ', ' more!']

「学習」のすべての出現で分割が発生していることがわかります。

まとめ

Python 文字列で .split() メソッドを使用する方法を理解できたと思います。

このチュートリアルの概要は次のとおりです。

  • Python の組み込み .split() メソッドは、文字列を文字列のリストに分割します。
  • string.split() を使用して、デフォルトの区切り文字である空白が出現するすべての箇所で 文字列 を分割します。
  • string.split(sep,maxsplit) を使用して、区切り文字 sep が出現した回数だけ文字列 maxsplit を分割します。結果のリストには maxsplit+1 個の項目が含まれます。

次のステップとして、Python 文字列が回文かアナグラムかを確認する方法を学習できます。

「 Python での Split() メソッドの使用方法」についてわかりやすく解説!絶対に観るべきベスト2動画

【毎日Python】Pythonで文字列を改行で分割する方法|str.splitlines
【毎日Python】Pythonで文字列を結合する方法|str.join

このチュートリアルでは、 Python の Split() メソッド を使用して文字列を文字列のリストに分割する方法を学びます。

Python 文字列を操作する場合、いくつかの組み込み文字列メソッドを使用して、大文字への変換、文字列の並べ替えなど、文字列の変更されたコピーを取得できます。そのようなメソッドの 1 つは、Python 文字列を文字列のリストに分割する .split() です。これについては、コーディング例で詳しく学びます。

チュートリアルが終わるまでに、次のことを学習していることになります。

  • .split() メソッドの仕組み
  • sep パラメーターと maxsplit パラメーターを使用して分割をカスタマイズする方法

さぁ、始めよう!

Python での Split() メソッドの使用方法
Python での Split() メソッドの使用方法

Python の Split() メソッドの構文

有効な文字列に対して Python の split() メソッドを使用するための一般的な構文は次のとおりです。

 string.split(sep, maxsplit)

# Parameters:
sep, maxsplit

# Returns:
A list of strings

ここで、 文字列に は任意の有効な Python 文字列を指定できます。

sep パラメーターと maxsplit パラメーターは両方ともオプションです。

  • sep は、 文字列を分割する区切り文字を示します。文字列として指定する必要があります。
  • maxsplit は、文字列を何回分割するかを指定する整数です。

オプションのパラメータを指定しない場合は、デフォルト値が使用されます。

  • sep 値を明示的に指定しない場合、空白がデフォルトの区切り文字として使用されます。
  • maxsplit の値を指定しない場合、デフォルトは -1 になります。これは、区切り文字が出現する たび に文字列が分割されることを意味します。

構文を平易な言葉で表現すると、次のようになります。

split() メソッドは、パラメータ sep で指定された セパレータ の出現時に文字列 maxsplit の回数を 分割します

Python の split() メソッドの構文を学習したので、いくつかの例のコーディングに進みましょう。

Python での Split() メソッドの使用方法
Python での Split() メソッドの使用方法

Python 文字列を文字列のリストに分割する

マシンに Python 3 がインストールされている場合は、Python REPL で次のコード スニペットを実行することで、このチュートリアルでコーディングできます。

REPL を開始するには、ターミナルから次のコマンドのいずれかを実行します。

 $ python
$ python -i

▶️ の Python エディターでこれらの例を試すこともできます。

この例では、py_str は Python 文字列です。パラメータを指定せずに py_str の .split() メソッドを呼び出して、出力を観察してみましょう。

 py_str = "Learn how to use split() in Python"
py_str.split()

# Output
['Learn', 'how', 'to', 'use', 'split()', 'in', 'Python']

上で見たように、文字列は 空白 が出現する たび に分割されます。

Python での Split() メソッドの使用方法
Python での Split() メソッドの使用方法

区切り記号の出現に応じて Python 文字列を分割する

#1 。最初の例として、区切り文字として二重アンダースコア (__) を使用して文字列 py_str を分割してみましょう。

 py_str = "All__the__best"
py_str.split(sep='__')

# Output
['All', 'the', 'best']

#2 別の例を見てみましょう。ここで、 py_str は 3 つの文があり、それぞれがピリオド (.) で終了します。

 py_str = "I love coding. Python is cool. I'm learning Python in 2022"
py_str.split(sep='.')

# Output
['I love coding', ' Python is cool', " I'm learning Python in 2022"]

▶️ この文字列に対して .split() メソッドを呼び出すと、 '.' 区切り文字として使用すると、上のコード セルに見られるように、結果のリストには 3 つの文が含まれます。

#3 いくつか質問してみましょう:

  • 文字列内に区切り文字がまったく存在しない場合はどうなりますか?
  • この場合、分割はどのように行われるのでしょうか?

以下に例を示します。

アスタリスク (*) の発生時に py_str 分割しようとしますが、これは発生しません。

 py_str = "This line contains no asterisk."
py_str.split(sep='*')

# Output
['This line contains no asterisk.']

この場合は分割ができないため、結果のリストには文字列全体が含まれます。

次のセクションでは、テキスト ファイルの内容に対して split() メソッドを使用する方法を見ていきます。

Python での Split() メソッドの使用方法
Python での Split() メソッドの使用方法

Python ファイルの内容を分割する

Python でテキスト ファイルを操作する場合、処理を容易にするために、区切り文字に基づいてファイルの内容を分割する必要がある場合があります。

サンプルのテキスト ファイルを次に示します。

Python ファイルの内容を分割する
Python ファイルの内容を分割する

以下のコード スニペットは、サンプル テキスト ファイルの内容で分割を使用する方法を示しています。

 with open('sample.txt') as f:
  content = f.read()
  str_list= content.split(sep='...')
  for string in str_list:
    print(string,end='')

上記のコードは次のことを行います。

  • コンテキスト マネージャー with 使用して、テキスト ファイル「sample.txt」を開いて操作します。
  • ファイル オブジェクト f .read() メソッドを使用して、ファイルの内容を読み取ります。
  • 区切り記号の省略記号 (…) が出現した時点でコンテンツをリスト str_list に分割します。
  • str_list をループして各文字列にアクセスし、それを出力します。

これが出力です。

 # Output
This is a sample text file
It contains info on
Getting started with <a href="https://.com/pcap-certification/">programming in Python</a>
According to the 2022 StackOverflow Developer Survey
Python is one of the most-loved programming languages
So what are you waiting for? Start learning!

練習として、テキスト ファイルの内容を任意の区切り文字で分割してみることができます。

Python 文字列をチャンクに分割する

文字列を 1 回分割すると、2 つのチャンクが得られます。 2回に分割すると3つになります。

📋 一般に、文字列を K 回分割すると、 K + 1 チャンクが得られます。

これを以下に示します。

#1 maxsplit 1 に設定します。区切り文字を指定していないため、デフォルトでは空白で分割が行われます。

 py_str = "Chunk#1  I'm a larger chunk, Chunk#2"
py_str.split(maxsplit=1)

# Output
['Chunk#1', "I'm a larger chunk, Chunk#2"]

リストの 2 番目のチャンクに空白が含まれている場合でも、分割は maxsplit 値 1 によって制御されるため、分割は行われません。

#2 maxsplit 値を 2 に増やして、次の例で分割がどのように発生するかを観察してみましょう。

 py_str = "Chunk#1 Chunk#2 I'm one large Chunk#3, even though I contain whitespaces"
py_str.split(maxsplit=2)

# Output
['Chunk#1',
 'Chunk#2',
 "I'm one large Chunk#3, even though I contain whitespaces"]

前の例と同様に、maxsplit 値によって分割の数が決まります。 3 つのチャンクが得られ、最初と 2 番目に空白が出現した後に分割されます。

#3 maxsplit 区切り文字の出現数よりも大きい値に設定するとどうなりますか?

次のコード セルでは、文字列にカンマが 4 つしか含まれていない場合、 maxsplit を 8 に設定します。

 py_str = "There, are, only, 4, commas"
py_str.split(maxsplit=8)

# Output
['There,', 'are,', 'only,', '4,', 'commas']

ここで、split メソッドは、カンマの 4 つすべての出現で py_str を分割します。 maxsplit を -1 より小さい値 (-7 など) に設定しようとしても、分割は区切り記号が出現するたびに行われます。

次に、学んだことをすべてまとめて、両方の sep maxsplit パラメーターを使用してみましょう。

Python 文字列をセパレータでチャンクに分割する

#1 。カンマ (,) が出現したときに文字列 py_str 3 つのチャンクに分割する必要があるとします。これを行うには、メソッド呼び出しで sep 値を ‘,’ に設定し、 maxsplit 値を 2 に設定します。

 py_str = "Chunk#1, Chunk#2, I'm one large Chunk#3, even though I contain a ,"
py_str.split(sep = ',',maxsplit=2)

# Output
['Chunk#1', ' Chunk#2', " I'm one large Chunk#3, even though I contain a ,"]

出力に見られるように、区切り文字の最初の 2 つの出現時に分割が 2 回発生します。

#2 。区切り文字 sep 必ずしも特殊文字である必要はありません。これは、前に使用した二重アンダースコアのような特殊文字のシーケンスである場合もあれば、部分文字列である場合もあります。

文字列 ‘learn’ を sep 引数として設定し、 maxsplit のさまざまな値に対して分割がどのように発生するかを見てみましょう。ここでは、 maxsplit 2 に設定します。

 py_str = "You need to learn data structures, learn algorithms, and learn more!"
py_str.split(sep = 'learn',maxsplit=2)

# Output
['You need to ', ' data structures, ', ' algorithms, and learn more!']

#3 。文字列 ‘learn’ が出現するすべての部分で py_str を分割したい場合は、 maxsplit パラメータを指定せずに sep = 'learn' を設定して、この .split() メソッドを呼び出すことができます。これは、以下のコード セルに示すように、 maxsplit 値を明示的に -1 に設定することと同じです。

 py_str = "You need to learn data structures, learn algorithms, and learn more!"
py_str.split(sep = 'learn',maxsplit=-1)

# Output
['You need to ', ' data structures, ', ' algorithms, and ', ' more!']

「学習」のすべての出現で分割が発生していることがわかります。

まとめ

Python 文字列で .split() メソッドを使用する方法を理解できたと思います。

このチュートリアルの概要は次のとおりです。

  • Python の組み込み .split() メソッドは、文字列を文字列のリストに分割します。
  • string.split() を使用して、デフォルトの区切り文字である空白が出現するすべての箇所で 文字列 を分割します。
  • string.split(sep,maxsplit) を使用して、区切り文字 sep が出現した回数だけ文字列 maxsplit を分割します。結果のリストには maxsplit+1 個の項目が含まれます。

次のステップとして、Python 文字列が回文かアナグラムかを確認する方法を学習できます。

「 Python での Split() メソッドの使用方法」についてわかりやすく解説!絶対に観るべきベスト2動画

【毎日Python】Pythonで文字列を改行で分割する方法|str.splitlines
【毎日Python】Pythonで文字列を結合する方法|str.join