Python | 文字列(string)

Python
スポンサーリンク

では Python の文字列(str)をプログラミング初心者向けにやさしく、例題つきで詳しく説明します。実際に手を動かして試せるように、短いコード例と練習問題(答え付き)を用意しました。コピーしてそのまま Python(REPL / スクリプト / Jupyter)で試してください。

1. 文字列って何?

文字列(string)は「文字が並んだデータ」です。単語、文章、名前、記号などすべて文字列に入ります。Python では "(ダブルクォート)か '(シングルクォート)で囲みます。

a = "Hello"
b = 'こんにちは'
print(a, b)
Python

どちらのクォートでもOK。内側に同じ種類のクォートを使いたいときは別の方を使うか、エスケープします。

s1 = "She said, 'Hello!'"   # シングルを内包
s2 = 'He said, "Hi!"'       # ダブルを内包
s3 = "I said \"Hello\""     # バックスラッシュでエスケープ
Python

2. 複数行の文字列(トリプルクォート)

長い文章や改行を含む文字列は ''' または """ を使います。

long = """これは
複数行の
文字列です"""
print(long)
Python

3. 文字列の連結(つなげる)

+ でつなげられます。ただし数値とは直接つなげられないので注意(後で変換します)。

first = "山田"
last  = "太郎"
full  = first + " " + last
print(full)  # 山田 太郎
Python

4. 文字列の繰り返し

* を使うと繰り返しができます。

"ha" * 3   # => "hahaha"
Python

5. 長さ(文字数)

len() で文字数を返します(日本語も 1 文字として数えます)。

len("こんにちは")  # => 5
Python

6. インデックス(位置指定)とスライス(部分取り出し)

文字列は文字の順序(0 から始まるインデックス)で扱えます。

s = "Python"
s[0]    # 'P'
s[1:4]  # 'yth'  -> 開始インデックスは含み、終了インデックスは含まない
s[-1]   # 'n'    -> 末尾の文字
Python

よく使うパターン:

  • s[:3] → 先頭から 3 文字(0,1,2)
  • s[3:] → 4 文字目(インデックス3)から最後まで
  • s[:] → コピー

7. 代表的な文字列メソッド(すぐ使えて便利なもの)

以下はよく使うメソッドです。どれも s.method() で呼びます。

  • s.lower():小文字にする
  • s.upper():大文字にする
  • s.strip():前後の空白(スペース・改行)を取り除く
  • s.split(sep=None):区切り文字で分割してリストを返す(デフォルトは空白)
  • sep.join(list):リストの要素を sep でつなげて文字列にする
  • s.replace(old, new):old を new に置き換える
  • s.find(sub):部分文字列が最初に出てくる位置(見つからなければ -1)
  • s.count(sub):部分文字列が何回出るか
  • s.startswith(prefix) / s.endswith(suffix):接頭・接尾の判定

例:

s = "  Hello, World!  "
print(s.strip())             # "Hello, World!"
print(s.upper())             # "  HELLO, WORLD!  "
print(s.replace("World", "Python"))  # "  Hello, Python!  "
print("a,b,c".split(","))    # ['a','b','c']
print(",".join(['x','y']))   # "x,y"
Python

8. 文字列フォーマット(変数や値を文字列に埋め込む)

  • 古い方法:%(あまり推奨されないが覚えておいても良い)
  • str.format():柔軟に書ける
  • f-strings(Python 3.6+ 推奨):シンプルで見やすい

例(f-string):

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

str.format() の例:

"{}さんは{}歳です".format(name, age)
"{name}さんは{age}歳です".format(name=name, age=age)
Python

9. 文字列と数値の変換

文字列と数値は別世界。str() で数値→文字列、int() / float() で文字列→数値(ただし文字列が数値表現であることが必要)。

n = 123
print("値は " + str(n))   # OK

s = "456"
num = int(s)             # 456 (int)
f = float("3.14")        # 3.14 (float)
Python

間違いやすい例(エラーになります):

"abc" + 123    # TypeError: can only concatenate str (not "int") to str
int("abc")     # ValueError: invalid literal for int()
Python

10. エスケープシーケンス(特殊文字)

\n(改行)、\t(タブ)など。文字列中で特殊な意味を持たせたいときに使います。

print("行1\n行2")
print("項目\t値")
Python

バックスラッシュをそのまま使いたい時は \\ または生の文字列 r"..." を使います(パスなどに便利)。

print(r"C:\Users\Name")  # バックスラッシュをエスケープせずに表示
Python

11. よくある「つまずき」ポイントと対処法

  • 数値と文字列を混同してエラー:str() / int() を使う。
  • インデックスの範囲エラー(s[100] のように存在しない位置を指定):範囲を確認するか len() を使う。
  • 日本語の扱い(エンコーディング):通常は Python 3 なら問題なし。ファイル入出力のときは encoding="utf-8" を指定すると安全。

12. 実践例(小さなスクリプト)

例1:ユーザーから名前を入力して挨拶。

name = input("名前を入力してください: ")
print(f"こんにちは、{name}さん!")
Python

例2:CSV 行(カンマ区切り)を分解して処理する。

row = "1001,山田太郎,28,python"
cols = row.split(",")
id_, name, age, skill = cols
print(name, "は", age, "歳で、スキルは", skill)
Python

13. 練習問題(自分でやってみよう)

各問の下に答えを書いていますが、まず自分で解いてから確認してください。

Q1. 文字列 "Hello" を 3 回繰り返して表示してください。
答え例:

print("Hello" * 3)  # HelloHelloHello
Python

Q2. first = "田中", last = "花子" を使って "田中 花子さん、ようこそ!" と出力してください(間にスペースを入れる)。
答え例:

first = "田中"
last  = "花子"
print(first + " " + last + "さん、ようこそ!")
# または
print(f"{first} {last}さん、ようこそ!")
Python

Q3. ユーザーに年齢を尋ねて、入力された文字列を整数に変換して 1 年後の年齢を表示するプログラムを書いてください。
答え例:

s = input("年齢を入力してください: ")
age = int(s)
print(f"来年は{age + 1}歳になります")
Python

Q4. 与えられた文字列 s = " apple, banana , cherry " をカンマで分割し、要素ごとに前後の空白を取り除いて(strip())、リストとして出力するコードを書いてください。
答え例:

s = " apple, banana , cherry "
items = [x.strip() for x in s.split(",")]
print(items)  # ['apple','banana','cherry']
Python

Q5.(少し応用) text = "cat,dog,cat,bird" に対して、各動物の出現回数を辞書で数える(count を使わない方法)コードを書いてください。
答え例:

text = "cat,dog,cat,bird"
items = text.split(",")
counts = {}
for item in items:
    counts[item] = counts.get(item, 0) + 1
print(counts)  # {'cat':2, 'dog':1, 'bird':1}
Python

14. ちょっと便利なコツ

  • 複雑な文字列操作は小さく分けて(split() で分解 → 各要素を strip() → 必要なら join())処理するとわかりやすい。
  • 正規表現(re モジュール)は強力だが最初は split / replace / find で十分。必要になったら学ぶ。
  • 文字列は不変(immutable)です。s[0] = "x" のような書き換えはできない。変更は新しい文字列を作ります(例:s = "x" + s[1:])。
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました