1. まずは基本:文字列リテラルとは?
文字列リテラルは「文字の塊」をプログラムに直接書いたものです。Pythonでは "(ダブルクオート) か '(シングルクオート) で囲みます。
s1 = "Hello, Python"
s2 = 'こんにちは'
s3 = "2019" # 見た目は数字でも文字列
Python" と ' は基本同じ。どちらを使ってもOK。混乱しないように一貫して使うと良いです。
2. クオーテーションに関するよくあるトラブルと対処
文字列の中に " や ' が含まれる場合:
- 文字列をダブルで囲めば文字列内にシングルを入れられる:
print("Tom's dog") # OK - 文字列をシングルで囲めば文字列内にダブルを入れられる:
print('彼は "こんにちは" と言った') # OK - どちらでも囲えない場合(両方入り混じる等)は、エスケープを使う:
print("He said \"Hello\"") # \" で " を表現 print('It\'s fine') # \' で ' を表現
3. 改行や長い文字列:複数行文字列(トリプルクオート)
複数行にまたがる長い文字列は """ または ''' を使います。ドキュメンテーション文字列(docstring)にも使います。
text = """これは
複数行にまたがる
文字列です"""
print(text)
Python4. 文字列の基本操作(便利でよく使うもの)
以下は頻出の基本操作と例:
- 長さを調べる:
s = "Python"
len(s) # → 6
Python- 取り出し(インデックス):
s[0](先頭)、s[-1](末尾)
s = "Python"
s[0] # 'P'
s[-1] # 'n'
Python- スライス(部分取得):
s = "Python"
s[1:4] # 'yth'(インデックス1〜3)
s[:2] # 'Py'(先頭から1まで)
s[2:] # 'thon'(2から最後まで)
Python- 連結(結合):
"Hello, " + "world" # 'Hello, world'
Python- 繰り返し:
"ha" * 3 # 'hahaha'
Python- 文字列は不変(immutable):
s[0] = 'x'のような代入はできません。新しい文字列を作る必要があります。
5. 代表的な文字列メソッド(よく使うもの)
(メソッドは 文字列.メソッド() の形で使います)
- 変換系
upper()→ 大文字にlower()→ 小文字にcapitalize()→ 先頭だけ大文字
"hello".upper() # 'HELLO'
Python- 空白削除
strip()→ 両端の空白削除lstrip()/rstrip()
" hi ".strip() # 'hi'
Python- 検索・置換
find(sub)→ 見つかれば開始インデックス、見つからなければ -1replace(old, new)→ 置換した新しい文字列を返す
"apple".find("p") # 1
"banana".replace("na", "NA") # 'baNANA'
Python- 分割・結合
split(sep)→ リストに分割join(iterable)→ リストなどを結合して文字列に
"a,b,c".split(",") # ['a','b','c']
",".join(["a","b"]) # 'a,b'
Python6. 文字列のフォーマット(変数を文字列に入れる方法)
プログラムでは文字列中に変数の値を入れたいことが多いです。主に3つのやり方があります。
- f-strings(推奨) — Python 3.6+
name = "Taro"
age = 20
f"{name}さんは{age}歳です" # 'Taroさんは20歳です'
Pythonstr.format()
"{}さんは{}歳".format(name, age)
"{name}さんは{age}歳".format(name="Taro", age=20)
Python- 古い書き方(%)(覚えておく程度でOK)
"%sは%d歳" % ("Taro", 20)
Python7. 例題:実際に触ってみよう(初心者向け)
各例題は実行して結果を確認してみてください。答えと解説もつけます。
例題1:名前を受け取って挨拶を作る
name = "Akiko"
greeting = "こんにちは、" + name + "さん!"
print(greeting)
Python出力:こんにちは、Akikoさん!
解説:+ で文字列をつなげています。
例題2:f-string を使って年齢表示
name = "Ken"
age = 30
print(f"{name}さんは{age}歳です。")
Python出力:Kenさんは30歳です。
解説:f"..." の中で {} に変数を入れるとその値が埋め込まれます。
例題3:メールアドレスのドメインを取り出す
email = "taro@example.com"
domain = email.split("@")[1]
print(domain)
Python出力:example.com
解説:split("@") で ["taro", "example.com"] となるので [1] を取り出しています。
例題4:余分な空白を削除してから大文字に
s = " hello world "
s2 = s.strip().upper()
print(s2)
Python出力:HELLO WORLD
解説:.strip() で両端の空白を取り除き、.upper() で大文字に変換しています。チェーンで使えるのが便利。
例題5:部分文字列の検索
s = "I love Python programming"
if s.find("Python") != -1:
print("Python が見つかりました")
else:
print("見つかりません")
Python出力:Python が見つかりました
解説:find() は見つかるとインデックス(0以上)を返し、見つからないと -1 を返します。in 演算子でも同じ判定ができます(よりシンプル):
if "Python" in s:
...
Python8. 練習問題 — 解答付き
下の問題を自分でコードを書いて試してみてください。答えも載せます。
問1:文字列 " Python " の両端を取り除き、Py だけ取り出して表示してください。
解答例:
s = " Python "
result = s.strip()[:2]
print(result) # 'Py'
Python問2:リスト ["apple", "banana", "cherry"] をカンマ区切りの1つの文字列にしてください。
解答例:
fruits = ["apple","banana","cherry"]
s = ",".join(fruits)
print(s) # 'apple,banana,cherry'
Python問3:ユーザー入力(input())で名前を受け取り、"Hello, <name>!" の形で表示してください(f-string を使う)。
解答例:
name = input("名前を入力してください: ")
print(f"Hello, {name}!")
Python9. よくある間違いメモ
s[0] = "A"のように書いてエラーになる(文字列は不変) → 新しい文字列を作る必要あり。- クオートを閉じ忘れて
SyntaxErrorになる → クオートがペアになっているか確認。 - 数字の見た目でも
"123"は文字列、123は数値 → 型が違うので注意(計算したいならint("123")のように変換)。
10. 次に学ぶと良いこと(推奨順)
- エスケープシーケンス(
\n,\t,\\など) - 正規表現(文字列の高度な検索・置換) — 必要になったらでOK
- バイト列(
bytes)とエンコーディング(ファイル読み書きで重要) - 文字列フォーマットの詳細(桁揃え・小数点表示など)

