Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで連続する同じ文字を分割してリスト化する方法


性質の似た文字が連続している文字列を分割したい場合には、標準ライブラリitertoolsの「groupby」メソッド「join」メソッドを組み合わせると簡単に実現できます。この記事では、実際のコード例とともにその手順をわかりやすく解説します。

サンプルコード

以下に具体的な実装例を示します。

from itertools import groupby

my_string = 'pppyyytthhhhhhhooonnn'
print("元の文字列:")
print(my_string)

my_result = ["".join(grp) for elem, grp in groupby(my_string)]

print("分割後の文字列:")
print(my_result)

実行結果

元の文字列:
pppyyytthhhhhhhooonnn
分割後の文字列:
['ppp', 'yyy', 'tt', 'hhhhhhh', 'ooo', 'nnn']

処理の流れと解説

  • まず、必要なパッケージであるitertoolsからgroupbyをインポートします。

  • 対象となる文字列を定義し、コンソールに表示します。

  • groupbyメソッドで文字列を走査し、隣接する同じ文字ごとにグループ化します。なお、groupbyは「連続している要素のみ」をまとめるため、文字列全体を事前にソートする必要はありません。

  • ループ変数のうち、elemにはグループのキー(その文字自体)が、grpにはグループ内の要素を持つイテレータが格納されます。

  • 各グループに対してjoinメソッドを適用して文字列に戻し、リスト内包表記によって結果を1つのリストにまとめます。

  • 最終的な結果をコンソールに出力します。

ポイント

groupbyはあくまで「隣接する同一要素」をまとめる関数です。そのため、途中で別の文字が挟まっている場合は、たとえ同じ文字でも別々のグループとして扱われます。連続パターンの検出やランレングス圧縮のような処理にも応用できる便利なテクニックなので、ぜひ覚えておきましょう。


  1. 【Python】文字列がすべてユニークな文字で構成されているか判定する方法

    本記事では、与えられた文字列に含まれる文字がすべて一意(ユニーク)であるかどうかを判定するPythonプログラムについて、その解法とアプローチをわかりやすく解説します。 問題の概要 文字列が入力として与えられたとき、その文字列に含まれるすべての文字が重複なく一意であるかどうかを判定します。たとえば「abcde」はすべて異なる文字で構成されているためTrue、「tutorialspoint」のように同じ文字が複数回出現する場合はFalseとなります。 アプローチ この問題は、以下のような手順で効率的に解くことができます。 ブール値の配列を用意する: 各インデックス i が「アルファベット(AS

  2. Pythonで文字列を分割・結合する方法|split()とjoin()の使い方を解説

    Pythonには、文字列の分割(split)と結合(join)を行うための組み込みメソッドが標準で用意されています。split()メソッドを使えば文字列を任意の区切り文字で簡単に分割でき、join()メソッドを使えば複数の文字列をひとつに連結できます。本記事では、それぞれの基本的な使い方をサンプルコードとともに解説します。 split Str.split() join Str1.join(str2) アルゴリズム ステップ1:文字列を入力する。 ステップ2:分割にはsplitメソッドを、結合にはjoin関数を使用する。 ステップ3:結果を出力する。 各メソッドのポイント split()