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

PythonでK個の異なる文字を含む長さNの部分文字列を抽出する方法

「K個の異なる文字」を含む「長さN」の部分文字列を抽出する必要がある場合、文字列を反復処理しながら、setメソッドを使ってユニークな文字の組み合わせを判定します。

サンプルコード

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

my_string = 'Pythonisfun'
print("The string is : ")
print(my_string)

my_substring = 2
my_chars = 2
my_result = []

for idx in range(0, len(my_string) - my_substring + 1):
   if (len(set(my_string[idx: idx + my_substring])) == my_chars):
      my_result.append(my_string[idx: idx + my_substring])
print("The resultant string is : ")
print(my_result)

出力

The string is :
Pythonisfun
The resultant string is :
['Py', 'yt', 'th', 'ho', 'on', 'ni', 'is', 'sf', 'fu', 'un']

解説

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

  • 部分文字列の長さ(N)と、必要な異なる文字の種類数(K)をそれぞれ定義します。

  • 結果を格納するための空のリストを用意します。

  • ループ範囲を len(my_string) - my_substring + 1 とすることで、文字列の末尾まで漏れなく走査できます。

  • スライス my_string[idx: idx + my_substring] で切り出した部分文字列に set() を適用すると、重複が除去されたユニークな文字だけが残ります。その要素数が指定した文字数(K)と一致する場合、その部分文字列を結果リストに追加します。

  • 最終的に、条件を満たすすべての部分文字列がコンソールに出力されます。

  1. Pythonで「\\」を「\」に置き換える方法|バックスラッシュのエスケープ解除テクニック

    Pythonでは、エスケープ処理された文字列に含まれる「\\」(二重のバックスラッシュ)を「\」(単一のバックスラッシュ)へ置き換えたい、つまりエスケープを解除したい場面があります。ここでは、その代表的な2つの方法をわかりやすく解説します。 方法1:ast.literal_eval を使う 1つ目の方法は、標準ライブラリの ast.literal_eval を使って文字列を評価するアプローチです。この方法では、対象の文字列をもう一段外側の引用符で囲む必要がある点に注意してください。 >>> import ast>>> a = Hello,\\nworld&

  2. Pythonで文字列と数値を連結する方法をわかりやすく解説

    Pythonで文字列と数値を連結する基本の方法Pythonでは、文字列と数値をそのまま + 演算子で結合することはできません。連結するには、str() 関数を使って数値を文字列型に変換する必要があります。以下は基本的な例です。>>> a = string >>> b = 1 >>> print(a + str(b)) string1このように str(b) によって数値 1 が文字列 1 に変換され、文字列同士として正しく連結されます。Python 2で使えたバッククォート記法についてPython 2では、数値をバッククォート(`)で囲むこ