
【6日でできるPython入門】組み込み型 文字列②
Pythonで文字列を自在に操作できるようになると、データ処理やアプリ開発の幅が一気に広がります。文字列には、さまざまな「メソッド」(特定の型で使える機能)が用意されており、複雑なテキスト加工も簡単に実現できます。
さらに、文字列は「シーケンス型」と呼ばれる性質を持ち、特定の位置の文字を取り出したり、部分的に切り出したりもできます。
ここでは、文字列のメソッドとインデクシング/スライシングの基本について詳しく学びます。

1.文字列のメソッド
1.1. 代表的な文字列メソッド
Pythonの文字列には、以下のような便利なメソッドが用意されています。
メソッドは「.メソッド名()」の形で呼び出し、特定の動作を行います。
メソッド名 | 機能 | 使用例・結果 |
---|---|---|
capitalize | 先頭のみ大文字にする | 'sakura'.capitalize() → 'Sakura' |
upper | 全部大文字に変換 | 'hello'.upper() → 'HELLO' |
lower | 全部小文字に変換 | 'HELLO'.lower() → 'hello' |
replace | 指定文字列の置換 | '赤い花'.replace('赤', '白') → '白い花' |
count | 指定文字の出現数を数える | 'banana'.count('a') → 3 |
find | 指定文字列の位置(なければ-1) | 'apple'.find('p') → 1 |
index | 指定文字列の位置(なければエラー) | 'apple'.index('p') → 1 |
strip | 前後の空白除去 | ' hello '.strip() → 'hello' |
format | 書式化(値の埋め込み) | "{}歳です".format(20) → '20歳です'" |
split | 区切り文字で分割しリスト化 | 'A,B,C'.split(',') → ['A', 'B', 'C'] |
join | リスト等を連結して文字列化 | '-'.join(['A','B']) → 'A-B' |
startswith | 指定文字列で始まるか判定 | 'Python'.startswith('Py') → True |
endswith | 指定文字列で終わるか判定 | 'index.html'.endswith('.html') → True |
サンプルプログラム:複数の文字列メソッドを組み合わせて使う
ファイル名: lesson05-1.py
# ユーザーの名前とメールを加工して出力するプログラム
name = "tanaka haru"
email = " haru.tanaka@sample.com "
# 名前の整形
formatted_name = name.title() # 頭文字を大文字に
print("整形後の名前:", formatted_name)
# メールの前後空白を除去
email_clean = email.strip()
print("整理済みメールアドレス:", email_clean)
# ドメイン部分だけ抜き出す
domain = email_clean.split("@")[1]
print("メールのドメイン:", domain)
# 名前に含まれる'a'の数を数える
a_count = name.count("a")
print("名前に含まれる'a'の数:", a_count)
# メールが「@sample.com」で終わるか確認
is_sample = email_clean.endswith("@sample.com")
print("sample.comのメールか:", is_sample)
実行結果
整形後の名前: Tanaka Haru
整理済みメールアドレス: haru.tanaka@sample.com
メールのドメイン: sample.com
名前に含まれる'a'の数: 4
sample.comのメールか: True
解説
コード | 説明 |
---|---|
name.title() | 先頭文字を大文字に("tanaka haru"→"Tanaka Haru") |
email.strip() | 前後空白を除去 |
email_clean.split("@")[1] | '@'で分割し2つ目(ドメイン)を取り出す |
name.count("a") | 'a'の出現回数をカウント |
email_clean.endswith("@sample.com") | 指定文字列で終わるか判定 |
1.2. formatメソッドの活用例
ファイル名: lesson05-2.py
product = "パソコン"
price = 85000
msg = "{}の価格は{}円です。".format(product, price)
print(msg)
実行結果
パソコンの価格は85000円です。
2.インデクシングとスライシング
2.1. インデクシング(文字の位置指定)
文字列の特定の位置の文字は、インデックス(0から始まる番号)でアクセスします。
ファイル名: lesson05-3.py
text = "プログラミング"
print("0番目の文字:", text[0])
print("3番目の文字:", text[3])
print("末尾の文字:", text[-1])
実行結果
0番目の文字: プ
3番目の文字: ラ
末尾の文字: グ
位置 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|---|
文字 | プ | ロ | グ | ラ | ミ | ン | グ |
※負の番号(-1, -2…)は後ろから数えます。
2.2. スライシング(部分文字列の取得)
文字列の一部を切り出すには、スライス記法 [start:end:step]
を使います。
ファイル名: lesson05-4.py
text = "アイウエオカキクケコ"
print("2~6番目の文字:", text[2:7]) # 2~6番目
print("0~4番目まで:", text[:5]) # 先頭~4番目
print("7番目以降:", text[7:]) # 7番目~末尾まで
print("2文字ごとに:", text[::2]) # 2文字ごと
print("逆順:", text[::-1]) # 逆順
実行結果
2~6番目の文字: ウエオカキ
0~4番目まで: アイウエオ
7番目以降: クケコ
2文字ごとに: アウオキケ
逆順: コケクキカオエウイア
スライス例 | 説明 |
---|---|
text[2:7] | 2番目~6番目まで |
text[:5] | 先頭~4番目まで |
text[7:] | 7番目~末尾まで |
text[::2] | 2文字ごとに抜き出す |
text[::-1] | 逆順にする |
このように、Pythonの文字列は多彩な操作ができ、複雑なテキスト処理も直感的に書くことができます。日常的な文字列処理をしっかりマスターして、プログラミングの力をさらに高めていきましょう。