指定文字数(n)毎に文字列を分割する方法を示します。
具体的には、下記の処理です。
”12123″を2文字毎に分割し、”12″, “12”, “3”とする。
n文字毎に文字列を分割する方法
分割した文字列をリストに格納
n = 2 s = "12123" l = [s[i:i+n] for i in range(0,len(s), n)] print(l) """出力 ['12', '12', '3'] """
分割した文字列を出力
n = 2 s = "12123" for i in range(0,len(s), n): print(s[i:i+n]) """出力 12 12 3 """
n文字毎に文字列を分割できる理由
本記事で使用した「for i in range(0,len(s), n)」により、文字列を分割できる理由を説明します。
s[i:j]は、j>len(s)の場合にjの代わりにlen(s)が使用されます。つまり、下記です。
j>len(s)の場合、 s[i:j]はs[i:len(s)]となる。
上記挙動により、s[i:i+n]のi+nがlen(s)より大きくなった場合もインデックスが範囲外になりませんでした。
下記、公式ドキュメントの説明です。
s の i から j へのスライスは
組み込み型 — Python 3.10.0b2 ドキュメントi <= k < j
となるようなインデックス k を持つ要素からなるシーケンスとして定義されます。 i または j がlen(s)
よりも大きい場合、len(s)
を使います。 i が省略されるかNone
だった場合、0
を使います。 j が省略されるかNone
だった場合、len(s)
を使います。 i が j 以上の場合、スライスは空のシーケンスになります。
参考
python – Split string every nth character? – Stack Overflow
本記事以外の方法
コメント