Python3 – 文字列

内容の取得

文字列長

文字列長はlen()関数で得られる。

一文字取得

配列のように文字列中の位置を指定して、一文字取得する。開始位置は0。-1で最後の文字を指定でき、そこから順に-2、-3と先頭に向けて遡る。

イテレータ、リストによる連続取得

文字列はイテレータ。

list()関数で一文字ずつのリストが得られる。

文字の出現回数

count(sub[, start[, end]])は元の文字列の中の部分文字列subの出現回数を返す。startendはオプションで指定可能。

部分文字列の取得(スライス)

以下の記法で部分文字列を取り出せる。ただし取り出される最後の文字列は終了位置-1番目の文字。

具体例は以下の通り。

正のステップ値の場合は検索方向が左→右なので以下の関係でなければならない。

負のステップ値を使うと、最後尾から先頭へ向かって文字を取り出す。特にステップ値を-1とすると、1文字ずつ前へ向かって取り出すので、文字列の反転に便利。ただし開始位置と終了位置に注意が必要。

負のステップ値の場合には検索方向が右→左になるので、以下の関係でなければならない。

n文字目からm文字取得したい時。

スライスとfinde/rfindでは開始位置・終了位置の指定の考え方が違ってくる

特定文字での分割

split()メソッドは、指定した文字列で元の文字列を分解し、リストで返す。

partition()メソッドは指定文字の最初の出現位置で文字列を分割し、タプルで結果を返す。

内容の判定

stringオブジェクトの以下のメソッドは、それぞれの条件に合致した場合にTrueを返す。空文字列に対しては全てFalseを返す。

isalpha()
全ての文字がアルファベットの場合にTrue。
isdigit()
全ての文字が数字の場合にTrue。
isalnum()
全ての文字がアルファベットか数字の場合にTrue。
islower()
文字列中のアルファベットが全て小文字の場合にTrue。アルファベット以外の数字や記号が含まれていても判定対象外で無視されるが、アルファベットがまったく含まれていないとFalse。
isupper()
文字列中のアルファベットが全て大文字の場合にTrue。アルファベット以外の数字や記号が含まれていても判定対象外。アルファベット以外の数字や記号が含まれていても判定対象外で無視されるが、アルファベットがまったく含まれていないとFalse。
isspace()
全ての文字がスペースの場合にTrue。
istitle()
文字列中の区切られた部分文字列がタイトルケースの場合にTrue。

検索

find/rfind

find()は指定した文字列を検索し、そのインデックスを返す。存在しない場合は-1が返される。検索範囲の指定はスライスと同じで[開始位置, 終了位置)。

index()も同じ使い方ができるが、存在しない場合にValueError: substring not foundが返される。

rfind()は文字列の後方から検索する。開始位置と終了位置の意味はスライスと同じだが、開始位置だけ指定すると、そこから文字列の後方が検索範囲となってしまう点に注意。

find/rfindとスライスでの範囲指定が違ってくる点に注意

内容の変更

連結

+演算子で文字列を連結できる。

join()メソッドで、元の文字列オブジェクトを区切り文字にして、引数リストの各文字列要素を連結できる。

数値と文字列を連結する場合、Pythonでは自動変換されない。str()関数で明示的に文字列に変換する必要がある。

join()の方が推奨されているらしい。

繰り返し

*演算子で同じ文字列を複数回繰り返した文字列を得られる。

置き換え

replace(old, new[, count)メソッドは、部分文字列oldnewで置き換える。countが指定されると、先頭からその個数分だけ置き換える。

置き換え前後の部分文字列の長さが違ってもよい。置き換え後に空文字列を指定すると、文字列の削除に使える。

replace()のほか、sub()関数(reパッケージ)、str.translate()関数も使える。

なお、部分文字列をスライスで取得した書式を使って文字列を代入することはできず、エラーとなる。

書式・整形

センタリング・左寄せ・右寄せ

center()ljust()rjust()の各メソッドで、元の文字列を指定した幅の中でセンタリング・左寄せ・右寄せできる。デフォルトでは空いた場所がスペース(‘ ‘)で埋められるが、その文字を指定することが可能。

余白などの切り落とし

strip()lstrip()rstrip()各メソッドは、文字列の両端の指定文字を削除する。デフォルトでは空白が削除されるが、複数の文字を切り落とす対象として指定できる。

ただし、切り落とされるのは最も外側の文字列群だけであることに注意。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です