初心者向けPython文字列操作ガイド

Pythonは初心者にも扱いやすいプログラミング言語として知られており、そのなかでも「文字列操作」は非常によく使われる基本機能です。

本記事では、文字列の基礎から便利なメソッド、さらには実践的なサンプルコードまでを解説します。

最後には学んだ内容を振り返る演習問題と、その解答例もご用意しました。


文字列の基本

文字列リテラル

Pythonでは文字列をシングルクォート(’…’)またはダブルクォート(”…”)で囲って表現します。

a = 'こんにちは'
b = "Python"

エスケープシーケンス

改行やタブなどはエスケープシーケンスで表現します。

  • \n:改行
  • \t:タブ
  • \\:バックスラッシュ自体
text = "Hello\nWorld\t!"
print(text)
# 出力:
# Hello
# World   !

文字列の連結・繰り返し・長さ

  • 連結(Concatenation):+ 演算子
  • 繰り返し(Repetition):* 演算子
  • 長さ(Length):len() 関数
s1 = "Hello"
s2 = "World"
print(s1 + " " + s2)   # Hello World
print("ha" * 3)        # hahaha
print(len("Python"))   # 6

インデックスとスライス

文字列は0から始まるインデックスでアクセスできます。また、スライスで部分文字列を取り出せます。

s = "Python"

# インデックス
print(s[0])    # 'P'
print(s[-1])   # 'n'

# スライス
print(s[1:4])  # 'yth'  (インデックス1以上4未満)
print(s[:3])   # 'Pyt'
print(s[3:])   # 'hon'
print(s[:])    # 'Python'(全体)

文字列メソッド

Pythonの文字列型には便利な組み込みメソッドが多数あります。

大文字・小文字変換

  • upper():全て大文字に
  • lower():全て小文字に
  • title():単語の先頭を大文字に
s = "python programming"
print(s.upper())   # 'PYTHON PROGRAMMING'
print(s.title())   # 'Python Programming'

余白の削除

  • strip():前後の空白を削除
  • lstrip():左側の空白を削除
  • rstrip():右側の空白を削除
s = "  hello  "
print(s.strip())   # 'hello'

検索

find(sub)は、部分文字列が最初に現れる位置を返します。なければ-1です。

index(sub)は、部分文字列がなければValueErrorを投げます。

s = "Hello World"
print(s.find("o"))   # 4
print(s.find("x"))   # -1

置換

replace(old, new[, count])は、指定回数だけ置換します。

s = "banana"
print(s.replace("a", "o", 2))  # 'bonono'

分割・結合

split(sep=None, maxsplit=-1)は、文字列をリストに分割します。

join(iterable)は、リストなどを文字列に結合します。

s = "red,green,blue"
colors = s.split(",")   # ['red', 'green', 'blue']
joined = "-".join(colors)  # 'red-green-blue'

その他の便利メソッド

capitalize()は、先頭を大文字にし、残りを小文字にします。

s = "hELLo"
print(s.capitalize())  # 'Hello'

islower()は、文字列が全て小文字かどうかを判定します。

print("hello".islower())  # True
print("Hello".islower())  # False

文字列のフォーマット

f文字列(Python 3.6+)

変数を {} の中に直接埋め込み。式も可。

name = "Alice"
age = 30
print(f"{name}さんは{age}歳です。")

str.format()

print("{}は{}歳".format("Bob", 25))
print("{1}が先、{0}が後".format("後", "先"))

パーセント書式

name = "Charlie"
score = 95.5
print("%sの得点は%.1f点" % (name, score))

実践サンプル

メールアドレスのドメイン抽出

def get_domain(email):
    # @以降を取得
    return email.split("@")[-1]

print(get_domain("user@example.com"))  # example.com

全角→半角変換(例)

# 簡易例: str.translateを使う方法
zenkaku = "ABC123"
hankaku = zenkaku.translate(str.maketrans(
    "ABC123", "ABC123"))
print(hankaku)  # ABC123

演習問題

  1. スライス応用
    文字列 s = “Programming” の先頭3文字と末尾3文字を組み合わせて出力する関数を作成せよ。
  2. 検索と置換
    文字列 text = “2025/06/21” を年月日それぞれ 年、月、日 の文字を含む形式 “2025年6月21日” に変換する関数を作成せよ。
  3. フォーマット練習
    名前と得点を引数に取り、”Aliceさんの点数は90点です。” のように出力する関数を3種類(f文字列、format()、パーセント書式)で作成せよ。
  4. 応用①:パス文字列処理
    ファイルパス “/home/user/data/file.txt” から拡張子(txt)のみを取り出す関数を実装せよ。
  5. 応用②:文字カウント
    任意の文字列と文字を引数に取り、その文字が文字列中にいくつ登場するかを返す関数を作成せよ。

解答例

# 1. 先頭3文字と末尾3文字
def slice_ends(s):
    return s[:3] + s[-3:]

print(slice_ends("Programming"))  # Proing

# 2. 日付フォーマット変換
def format_date(text):
    y, m, d = text.split("/")
    return f"{int(y)}年{int(m)}月{int(d)}日"

print(format_date("2025/06/21"))  # 2025年6月21日

# 3. フォーマット3種
def f_string(name, score):
    return f"{name}さんの点数は{score}点です。"

def format_method(name, score):
    return "{}さんの点数は{}点です。".format(name, score)

def percent_format(name, score):
    return "%sさんの点数は%d点です。" % (name, score)

print(f_string("Alice", 90))
print(format_method("Bob", 85))
print(percent_format("Charlie", 95))

# 4. 拡張子取得
def get_ext(path):
    return path.split(".")[-1]

print(get_ext("/home/user/data/file.txt"))  # txt

# 5. 文字カウント
def count_char(s, ch):
    return s.count(ch)

print(count_char("abracadabra", "a"))  # 5

まとめ

本記事では、Pythonの文字列操作の基本から応用までを幅広く紹介しました。

文字列は多くのプログラムで必須となる要素ですので、ぜひ演習問題に取り組んで理解を深めてください。

これらのスキルを身につけることで、データの前処理やユーザーからの入力処理など、多くの場面で役立つことでしょう。

今後もさらなる発展編として、正規表現(reモジュール)による高度な文字列操作や、日本語特有の文字エンコーディングなどを学ぶことで、より柔軟なテキスト処理が可能になります。ぜひチャレンジしてみてください!