Python | 文字列リテラル

Python
スポンサーリンク

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)
Python

4. 文字列の基本操作(便利でよく使うもの)

以下は頻出の基本操作と例:

  • 長さを調べる:
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) → 見つかれば開始インデックス、見つからなければ -1
    • replace(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'
Python

6. 文字列のフォーマット(変数を文字列に入れる方法)

プログラムでは文字列中に変数の値を入れたいことが多いです。主に3つのやり方があります。

  • f-strings(推奨) — Python 3.6+
name = "Taro"
age = 20
f"{name}さんは{age}歳です"   # 'Taroさんは20歳です'
Python
  • str.format()
"{}さんは{}歳".format(name, age)
"{name}さんは{age}歳".format(name="Taro", age=20)
Python
  • 古い書き方(%)(覚えておく程度でOK)
"%sは%d歳" % ("Taro", 20)
Python

7. 例題:実際に触ってみよう(初心者向け)

各例題は実行して結果を確認してみてください。答えと解説もつけます。

例題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:
    ...
Python

8. 練習問題 — 解答付き

下の問題を自分でコードを書いて試してみてください。答えも載せます。

問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}!")
Python

9. よくある間違いメモ

  • s[0] = "A" のように書いてエラーになる(文字列は不変) → 新しい文字列を作る必要あり。
  • クオートを閉じ忘れて SyntaxError になる → クオートがペアになっているか確認。
  • 数字の見た目でも "123" は文字列、123 は数値 → 型が違うので注意(計算したいなら int("123") のように変換)。

10. 次に学ぶと良いこと(推奨順)

  1. エスケープシーケンス(\n, \t, \\ など)
  2. 正規表現(文字列の高度な検索・置換) — 必要になったらでOK
  3. バイト列(bytes)とエンコーディング(ファイル読み書きで重要)
  4. 文字列フォーマットの詳細(桁揃え・小数点表示など)

タイトルとURLをコピーしました