Pythonで文字列の各文字を反復処理する5つの方法
はじめに
本記事では、Python 3.x(およびそれ以前のバージョン)において、文字列の各文字へ反復処理(トラバース)を行う方法について詳しく解説します。
文字列とは、空白・アルファベット・数字などを含むことのできる「文字の集合」です。文字列内の各文字には、インデックスや参照を使ってアクセスできます。ここでは、実際によく使われる代表的な5つの方法をコード例とともに紹介します。
方法1:インデックスを使わない直接的なイテレーション
最もシンプルな方法です。Pythonでは文字列自体が反復可能(イテラブル)なオブジェクトであるため、for文で直接ループさせることができます。
string_inp = "tutorialspoint"
# 文字列を反復処理する
for value in string_inp:
print(value, end='')
方法2:インデックスベースのアクセス(最も一般的な方法)
range()関数とlen()関数を組み合わせて、インデックス番号を順に生成し、各文字にアクセスします。インデックスが必要になる処理でも応用しやすい定番の書き方です。
string_inp = "tutorialspoint"
# 文字列を反復処理する
for value in range(0, len(string_inp)):
print(string_inp[value], end='')
方法3:enumerate()を使う
enumerate()関数を使用すると、インデックスと文字を同時に取得できます。「何番目の文字か」という情報も必要とする場面で特に便利です。
string_inp = "tutorialspoint"
# 文字列を反復処理する
for value, char in enumerate(string_inp):
print(char, end='')
方法4:負のインデックスによるアクセス
Pythonでは負のインデックスがサポートされており、文字列の末尾側から数えてアクセスすることも可能です。
string_inp = "tutorialspoint"
# 文字列を反復処理する
for value in range(-len(string_inp), 0):
print(string_inp[value], end='')
方法5:スライスを使ったアクセス
スライス記法を活用すれば、1文字ずつ部分文字列として取り出しながら反復処理を行うこともできます。
string_inp = "tutorialspoint"
# 文字列を反復処理する
for value in range(0, len(string_inp)):
print(string_inp[value-1:value], end='')
print(string_inp[-1:])
出力結果
上記の5つの方法はすべて同じ出力結果となります。
tutorialspoint
まとめ
本記事では、Pythonにおける文字列の各文字への反復処理・走査のさまざまな方法について学びました。シンプルなループから、enumerate()やスライスを活用した高度な手法まで、状況に応じて最適な方法を選択することで、より読みやすく効率的なコードを書くことができます。
-
Pythonでシーケンスのインデックスを使って反復処理する方法
Pythonにおけるシーケンス型オブジェクトとは、リスト・タプル・文字列のように、要素が順序をもって並んでいるデータ構造のことです。それぞれの要素には、0から始まるインデックス(添字)を使ってアクセスできます。この記事では、インデックスを利用してシーケンス内の要素を1つずつ順番に処理する基本的な方法を解説します。range()とlen()を組み合わせた基本形シーケンスの反復処理で最もよく使われるのが、len()関数とrange()関数の組み合わせです。len()でシーケンスの長さを取得し、それをrange()に渡すことで、「0 ~ 長さ-1」までの連続した整数が生成されます。これをfor文で回
-
Pythonで文字列から特定の文字を削除する方法|replaceと正規表現の使い方
replace()メソッドで文字を削除するPythonの文字列(str)クラスには、文字列内の部分文字列を置換するためのreplace()メソッドが用意されています。削除したい文字を空文字列()に置き換えることで、実質的にその文字を取り除くことができます。>>> Hello people.replace(e, ) Hllo popl複数の文字を一度に削除する:正規表現を使う1行のコードで複数の文字をまとめて削除したい場合は、正規表現を使うのが便利です。削除したい文字を「|」で区切ってパターンを指定し、re.sub(置換対象パターン, 置換後の文字列, 対象文字列)という形式で