メインコンテンツへスキップ
Lesson3 / 9

文字列型(str)の基本

目次

1. このレッスンで学ぶこと

  • 文字列とは何か、どう作るか
  • 文字列の基本的な操作方法
  • 便利な文字列メソッド
  • 文字列の結合とフォーマット

2. 文字列型とは

文字列型は、文字を並べたデータを扱うための型です。

プログラムで扱うデータは、数値だけではありません。名前、メッセージ、住所など、文字で表現される情報も重要なデータです。これらを扱うのが文字列型です。

文字列の表現方法

Pythonでは、文字列を " " (ダブルクォーテーション)または ' ' (シングルクォーテーション)で囲んで表現します:

Python
# ダブルクォーテーション
name = "太郎"

# シングルクォーテーション
message = 'こんにちは'

# どちらも同じ文字列型
print(type(name))     # <class 'str'>
print(type(message))  # <class 'str'>

文字列の例

日常生活で使う様々な文字情報を文字列として扱えます:

Python
# 名前
name = "山田太郎"

# メールアドレス
email = "taro@example.com"

# メッセージ
greeting = "おはようございます"

# 住所
address = "東京都渋谷区"

💡 豆知識: 文字列は英語で「String(ストリング)」と言います。文字を糸(string)のようにつなげたものという意味です。


3. なぜ文字列型を理解する必要があるのか?

文字列型は、数値型と並んでプログラミングで最もよく使うデータ型の一つです。

文字列型を使う場面

  • ユーザー情報: 名前、メールアドレス、電話番号
  • メッセージ: エラーメッセージ、通知、挨拶文
  • テキストデータ: ファイル名、URLパス、設定値
  • 入出力: ユーザーからの入力、画面への出力

文字列と数値の違い

Python
# 文字列の "123"
text_number = "123"
print(text_number + "456")  # 123456(文字として連結)

# 数値の 123
real_number = 123
print(real_number + 456)    # 579(数値として計算)

重要なポイント:

  • 文字列と数値は全く別のデータ型
  • 文字列の "1" と数値の 1 は異なる
  • 用途に応じて正しい型を選ぶことが重要

4. 文字列の基本

文字列の作成

Python
# ダブルクォーテーション
name = "太郎"

# シングルクォーテーション
message = '

こんにちは'

# どちらも同じ意味
print(name)     # 太郎
print(message)  # こんにちは

複数行の文字列

Python
# トリプルクォート(3つのクォート)で囲むと改行を含められる
text = """これは
複数行の
文字列です"""

print(text)

実行結果:

これは
複数行の
文字列です

5. 文字列の基本操作

結合(連結)

Python
first_name = "太郎"
last_name = "山田"

# + で結合
full_name = last_name + first_name
print(full_name)  # 山田太郎

# スペースを入れて結合
full_name_space = last_name + " " + first_name
print(full_name_space)  # 山田 太郎

繰り返し

Python
text = "Hello"
repeated = text * 3
print(repeated)  # HelloHelloHello

# 区切り文字と組み合わせ
line = "=" * 20
print(line)  # ====================

長さの取得

Python
text = "こんにちは"
length = len(text)
print(length)  # 5

len() 関数で文字列の長さ(文字数)を取得できます。


6. 文字列のインデックスとスライス

インデックス(位置指定)

インデックスとは、文字列内の各文字が格納されている位置を示す番号です。インデックスを使うことで特定の文字にアクセスできます。

Python
text = "Python"

# 最初の文字(0から始まる)
print(text[0])  # P

# 2番目の文字
print(text[1])  # y

# 最後の文字
print(text[-1])  # n

# 後ろから2番目
print(text[-2])  # o

ポイント: インデックスは0から始まります。負の数で後ろから数えられます。


スライス(部分取得)

スライスを使うことで、連続した複数の文字を取り出すことができます。

Python
text = "Hello World"

# 最初の5文字
print(text[0:5])  # Hello

# 6文字目から最後まで
print(text[6:])   # World

# 最初から5文字目まで
print(text[:5])   # Hello

# 後ろ5文字
print(text[-5:])  # World

書き方: 文字列[開始:終了](終了位置は含まれません)


7. 便利な文字列メソッド

upper() / lower() - 大文字・小文字変換

機能: 英字を大文字・小文字に変換します。

Python
text = "Hello World"

print(text.upper())  # HELLO WORLD(全て大文字)
print(text.lower())  # hello world(全て小文字)

用途: メールアドレスやユーザー名の正規化、比較処理など


strip() - 空白の削除

機能: 文字列の両端(または片側)の空白を削除します。

Python
text = "  こんにちは  "

print(text.strip())   # "こんにちは"(両端の空白を削除)
print(text.lstrip())  # "こんにちは  "(左の空白を削除)
print(text.rstrip())  # "  こんにちは"(右の空白を削除)

用途: ユーザー入力の整形、ファイル読み込み時の不要な空白除去


replace() - 置換

機能: 文字列内の指定した部分を別の文字列に置き換えます。

Python
text = "こんにちは、太郎さん"

# "太郎" を "花子" に置き換え
new_text = text.replace("太郎", "花子")
print(new_text)  # こんにちは、花子さん

# 全ての出現箇所を置換
text = "りんごとりんごとりんご"
result = text.replace("りんご", "みかん")
print(result)  # みかんとみかんとみかん

書き方: 文字列.replace(置換前, 置換後)


split() - 分割

機能: 文字列を指定した区切り文字で分割し、リストにします。

Python
text = "りんご,みかん,バナナ"

# カンマで分割
fruits = text.split(",")
print(fruits)  # ['りんご', 'みかん', 'バナナ']

# スペースで分割(デフォルト)
sentence = "Hello World Python"
words = sentence.split()
print(words)  # ['Hello', 'World', 'Python']

用途: CSVデータの処理、文章の単語分割


find() / in - 検索

機能: 文字列内に特定の文字列が含まれるか検索します。

Python
text = "Pythonは楽しい"

# "楽しい" の位置を検索(見つからない場合は-1)
position = text.find("楽しい")
print(position)  # 6

# 存在チェック(in演算子)
print("Python" in text)  # True
print("Java" in text)    # False

使い分け:

  • find(): 位置を知りたい場合
  • in: 存在だけ確認したい場合

8. 文字列フォーマット

f-string(推奨)

Python
name = "太郎"
age = 25

# f-stringで変数を埋め込む
message = f"{name}さんは{age}歳です"
print(message)  # 太郎さんは25歳です

# 計算も可能
price = 1000
message = f"合計金額は{price * 1.1}円です"
print(message)  # 合計金額は1100.0円です

format()メソッド

Python
name = "太郎"
age = 25

message = "{}さんは{}歳です".format(name, age)
print(message)  # 太郎さんは25歳です

9. 練習問題

問題1(基礎)⭐☆☆

名字と名前を別々の変数に保存し、フルネームを「姓 名」の形式で表示してください(間にスペースを入れる)。

💡 ヒント

+ で文字列を結合します。スペースも " " で文字列として扱います。

✅ 解答例
Python
first_name = "太郎"
last_name = "山田"

full_name = last_name + " " + first_name
print(full_name)

実行結果:

山田 太郎

解説: " " は半角スペース1つ分の文字列です。+ 演算子で3つの文字列を結合しています。


問題2(基礎)⭐☆☆

「Python」という文字列から、最初の2文字「Py」を取り出して表示してください。

💡 ヒント

スライスを使います。文字列[0:2] で最初から2文字目まで取得できます。

✅ 解答例
Python
text = "Python"
result = text[0:2]
print(result)  # Py

# または
print(text[:2])  # Py

実行結果:

Py

解説: text[0:2] は0番目から2番目の手前(1番目)までを取得します。開始位置を省略すると0から始まります。


問題3(応用)⭐⭐☆

メールアドレス「user@example.com」から、ユーザー名部分(@の前)とドメイン部分(@の後)を別々に取り出して表示してください。

💡 ヒント
  1. split("@") で@を基準に分割
  2. 分割した結果はリストになる
  3. リストの0番目がユーザー名、1番目がドメイン
✅ 解答例
Python
email = "user@example.com"

# @で分割
parts = email.split("@")

username = parts[0]
domain = parts[1]

print(f"ユーザー名: {username}")
print(f"ドメイン: {domain}")

実行結果:

ユーザー名: user
ドメイン: example.com

解説: split() メソッドは文字列を指定した区切り文字で分割し、リストとして返します。リストの各要素にインデックスでアクセスできます。


10. まとめ

このレッスンでは、文字列の扱い方と操作メソッドを学びました。

  • 文字列は " " または ' ' で表現し、+* で結合・繰り返しができます。
  • インデックスとスライスを使うことで、必要な文字や部分文字列を取り出せます。
  • upper(), lower(), strip(), replace(), split() などのメソッドで加工ができます。
  • f-stringを使うと、変数を含む文字列を読みやすく作成できます。
  • 文字列は変更不可の型であり、数値との連結時には型変換が必要です。