Pythonのテキストシーケンス型(str)とは?文字列の基本と主要メソッドを解説
Pythonでは、strオブジェクトがテキスト(文字列)型のデータを扱います。文字列はイミュータブル(変更不可)であり、Unicode文字のシーケンス(並び)として表現されます。
文字列リテラルを定義するには、シングルクォート、ダブルクォート、またはトリプルクォートを使用できます。
- 'シングルクォートを使った文字列'
- "ダブルクォートを使った文字列"
- '''シングルクォート3つで囲んだ文字列''' または """ダブルクォート3つで囲んだ文字列"""
特にトリプルクォートを使うと、複数行にわたる文字列をそのまま代入できるのが特徴です。改行やインデントを含む長いテキストを扱う際に便利です。
主な文字列メソッド一覧
Pythonには文字列操作のための組み込みメソッドが多数用意されています。よく使われる代表的なメソッドを以下にまとめました。
| No. | メソッド名と説明 |
|---|---|
| 1 | s.capitalize() 先頭の文字を大文字に変換します。 |
| 2 | s.center(width[, fillchar]) 指定した幅になるよう文字列を中央揃えし、余白を指定した文字で埋めます。デフォルトは半角スペースです。 |
| 3 | s.count(sub[, start[, end]]) 文字列内に部分文字列が出現する回数を数えます。 |
| 4 | s.find(sub[, start[, end]]) 部分文字列が最初に出現する位置(インデックス)を返します。見つからない場合は -1 を返します。 |
| 5 | s.format(*args, **kwargs) 文字列を整形して、見やすい出力を生成します。 |
| 6 | s.isalnum() すべての文字が英数字かどうかを判定します。 |
| 7 | s.isalpha() すべての文字がアルファベットかどうかを判定します。 |
| 8 | s.isdigit() すべての文字が数字かどうかを判定します。 |
| 9 | s.isspace() 文字列が空白文字のみで構成されているかを判定します。 |
| 10 | s.join(iterable) イテラブル内の各要素を、指定した区切り文字で連結します。 |
| 11 | s.ljust(width[, fillchar]) 左詰めの文字列を返します。 |
| 12 | s.rjust(width[, fillchar]) 右詰めの文字列を返します。 |
| 13 | s.lower() すべて小文字に変換します。 |
| 14 | s.split(sep=None, maxsplit=-1) 指定した区切り文字で文字列を分割します。 |
| 15 | s.strip([chars]) 文字列の先頭・末尾から指定した文字を取り除きます。省略時は空白を削除します。 |
| 16 | s.swapcase() 大文字を小文字に、小文字を大文字に入れ替えます。 |
| 17 | s.upper() すべて大文字に変換します。 |
| 18 | s.zfill(width) 指定した桁数になるまで左側をゼロで埋めます。 |
サンプルコード
myStr1 = 'This is a Python String'
myStr2 = "hello world"
print(myStr2)
print(myStr2.capitalize())
print(myStr2.center(len(myStr1)))
print(myStr1)
print(myStr1.find('Py')) # 部分文字列 'Py' の位置を取得
myStr3 = 'abc123'
print(myStr3.isalnum())
print(myStr3.isdigit())
print('AB'.join('XY'))
print(myStr2.rjust(20, '_')) # 右詰めにして '_' で埋める
print(myStr1.swapcase())
print('2509'.zfill(10)) # ゼロ埋めして10桁の文字列にする
実行結果
hello world
Hello world
hello world
This is a Python String
10
True
False
XABY
_________hello world
tHIS IS A pYTHON sTRING
0000002509
まとめ
Pythonの文字列(str型)はイミュータブルなUnicodeシーケンスであり、豊富な組み込みメソッドによって柔軟なテキスト処理が可能です。大文字・小文字の変換、検索、分割、結合、書式整形など、日常的な文字列操作はこれらのメソッドだけでほぼカバーできます。まずは capitalize()、find()、split()、join() などの頻出メソッドから使いこなせるようにしておくとよいでしょう。
-
Pythonでシーケンスのインデックスを使って反復処理する方法
Pythonにおけるシーケンス型オブジェクトとは、リスト・タプル・文字列のように、要素が順序をもって並んでいるデータ構造のことです。それぞれの要素には、0から始まるインデックス(添字)を使ってアクセスできます。この記事では、インデックスを利用してシーケンス内の要素を1つずつ順番に処理する基本的な方法を解説します。range()とlen()を組み合わせた基本形シーケンスの反復処理で最もよく使われるのが、len()関数とrange()関数の組み合わせです。len()でシーケンスの長さを取得し、それをrange()に渡すことで、「0 ~ 長さ-1」までの連続した整数が生成されます。これをfor文で回
-
Pythonで文字列内の最長の反復部分文字列を見つける方法
Pythonでは、collectionsモジュールのdefaultdictを使うことで、入力文字列の各位置から始まるすべての部分文字列の出現回数を効率的に集計できます。 ポイントとなるのはgetsubsメソッドです。これはジェネレータ関数として実装されており、呼び出されるたびに指定位置から始まる部分文字列を、完全な文字列から1文字ずつ短くしたものまで順番にyield(生成)していきます。 コード例 from collections import defaultdict def getsubs(loc, s): substr = s[loc:] i = -1 while