文字列型(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. 文字列の基本操作
結合(連結)
Pythonfirst_name = "太郎" last_name = "山田" # + で結合 full_name = last_name + first_name print(full_name) # 山田太郎 # スペースを入れて結合 full_name_space = last_name + " " + first_name print(full_name_space) # 山田 太郎
繰り返し
Pythontext = "Hello" repeated = text * 3 print(repeated) # HelloHelloHello # 区切り文字と組み合わせ line = "=" * 20 print(line) # ====================
長さの取得
Pythontext = "こんにちは" length = len(text) print(length) # 5
len() 関数で文字列の長さ(文字数)を取得できます。
6. 文字列のインデックスとスライス
インデックス(位置指定)
インデックスとは、文字列内の各文字が格納されている位置を示す番号です。インデックスを使うことで特定の文字にアクセスできます。
Pythontext = "Python" # 最初の文字(0から始まる) print(text[0]) # P # 2番目の文字 print(text[1]) # y # 最後の文字 print(text[-1]) # n # 後ろから2番目 print(text[-2]) # o
ポイント: インデックスは0から始まります。負の数で後ろから数えられます。
スライス(部分取得)
スライスを使うことで、連続した複数の文字を取り出すことができます。
Pythontext = "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() - 大文字・小文字変換
機能: 英字を大文字・小文字に変換します。
Pythontext = "Hello World" print(text.upper()) # HELLO WORLD(全て大文字) print(text.lower()) # hello world(全て小文字)
用途: メールアドレスやユーザー名の正規化、比較処理など
strip() - 空白の削除
機能: 文字列の両端(または片側)の空白を削除します。
Pythontext = " こんにちは " print(text.strip()) # "こんにちは"(両端の空白を削除) print(text.lstrip()) # "こんにちは "(左の空白を削除) print(text.rstrip()) # " こんにちは"(右の空白を削除)
用途: ユーザー入力の整形、ファイル読み込み時の不要な空白除去
replace() - 置換
機能: 文字列内の指定した部分を別の文字列に置き換えます。
Pythontext = "こんにちは、太郎さん" # "太郎" を "花子" に置き換え new_text = text.replace("太郎", "花子") print(new_text) # こんにちは、花子さん # 全ての出現箇所を置換 text = "りんごとりんごとりんご" result = text.replace("りんご", "みかん") print(result) # みかんとみかんとみかん
書き方: 文字列.replace(置換前, 置換後)
split() - 分割
機能: 文字列を指定した区切り文字で分割し、リストにします。
Pythontext = "りんご,みかん,バナナ" # カンマで分割 fruits = text.split(",") print(fruits) # ['りんご', 'みかん', 'バナナ'] # スペースで分割(デフォルト) sentence = "Hello World Python" words = sentence.split() print(words) # ['Hello', 'World', 'Python']
用途: CSVデータの処理、文章の単語分割
find() / in - 検索
機能: 文字列内に特定の文字列が含まれるか検索します。
Pythontext = "Pythonは楽しい" # "楽しい" の位置を検索(見つからない場合は-1) position = text.find("楽しい") print(position) # 6 # 存在チェック(in演算子) print("Python" in text) # True print("Java" in text) # False
使い分け:
find(): 位置を知りたい場合in: 存在だけ確認したい場合
8. 文字列フォーマット
f-string(推奨)
Pythonname = "太郎" age = 25 # f-stringで変数を埋め込む message = f"{name}さんは{age}歳です" print(message) # 太郎さんは25歳です # 計算も可能 price = 1000 message = f"合計金額は{price * 1.1}円です" print(message) # 合計金額は1100.0円です
format()メソッド
Pythonname = "太郎" age = 25 message = "{}さんは{}歳です".format(name, age) print(message) # 太郎さんは25歳です
9. 練習問題
問題1(基礎)⭐☆☆
名字と名前を別々の変数に保存し、フルネームを「姓 名」の形式で表示してください(間にスペースを入れる)。
💡 ヒント
+ で文字列を結合します。スペースも " " で文字列として扱います。
✅ 解答例
Pythonfirst_name = "太郎" last_name = "山田" full_name = last_name + " " + first_name print(full_name)
実行結果:
山田 太郎
解説:
" " は半角スペース1つ分の文字列です。+ 演算子で3つの文字列を結合しています。
問題2(基礎)⭐☆☆
「Python」という文字列から、最初の2文字「Py」を取り出して表示してください。
💡 ヒント
スライスを使います。文字列[0:2] で最初から2文字目まで取得できます。
✅ 解答例
Pythontext = "Python" result = text[0:2] print(result) # Py # または print(text[:2]) # Py
実行結果:
Py
解説:
text[0:2] は0番目から2番目の手前(1番目)までを取得します。開始位置を省略すると0から始まります。
問題3(応用)⭐⭐☆
メールアドレス「user@example.com」から、ユーザー名部分(@の前)とドメイン部分(@の後)を別々に取り出して表示してください。
💡 ヒント
split("@")で@を基準に分割- 分割した結果はリストになる
- リストの0番目がユーザー名、1番目がドメイン
✅ 解答例
Pythonemail = "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を使うと、変数を含む文字列を読みやすく作成できます。
- 文字列は変更不可の型であり、数値との連結時には型変換が必要です。
文字列型(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. 文字列の基本操作
結合(連結)
Pythonfirst_name = "太郎" last_name = "山田" # + で結合 full_name = last_name + first_name print(full_name) # 山田太郎 # スペースを入れて結合 full_name_space = last_name + " " + first_name print(full_name_space) # 山田 太郎
繰り返し
Pythontext = "Hello" repeated = text * 3 print(repeated) # HelloHelloHello # 区切り文字と組み合わせ line = "=" * 20 print(line) # ====================
長さの取得
Pythontext = "こんにちは" length = len(text) print(length) # 5
len() 関数で文字列の長さ(文字数)を取得できます。
6. 文字列のインデックスとスライス
インデックス(位置指定)
インデックスとは、文字列内の各文字が格納されている位置を示す番号です。インデックスを使うことで特定の文字にアクセスできます。
Pythontext = "Python" # 最初の文字(0から始まる) print(text[0]) # P # 2番目の文字 print(text[1]) # y # 最後の文字 print(text[-1]) # n # 後ろから2番目 print(text[-2]) # o
ポイント: インデックスは0から始まります。負の数で後ろから数えられます。
スライス(部分取得)
スライスを使うことで、連続した複数の文字を取り出すことができます。
Pythontext = "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() - 大文字・小文字変換
機能: 英字を大文字・小文字に変換します。
Pythontext = "Hello World" print(text.upper()) # HELLO WORLD(全て大文字) print(text.lower()) # hello world(全て小文字)
用途: メールアドレスやユーザー名の正規化、比較処理など
strip() - 空白の削除
機能: 文字列の両端(または片側)の空白を削除します。
Pythontext = " こんにちは " print(text.strip()) # "こんにちは"(両端の空白を削除) print(text.lstrip()) # "こんにちは "(左の空白を削除) print(text.rstrip()) # " こんにちは"(右の空白を削除)
用途: ユーザー入力の整形、ファイル読み込み時の不要な空白除去
replace() - 置換
機能: 文字列内の指定した部分を別の文字列に置き換えます。
Pythontext = "こんにちは、太郎さん" # "太郎" を "花子" に置き換え new_text = text.replace("太郎", "花子") print(new_text) # こんにちは、花子さん # 全ての出現箇所を置換 text = "りんごとりんごとりんご" result = text.replace("りんご", "みかん") print(result) # みかんとみかんとみかん
書き方: 文字列.replace(置換前, 置換後)
split() - 分割
機能: 文字列を指定した区切り文字で分割し、リストにします。
Pythontext = "りんご,みかん,バナナ" # カンマで分割 fruits = text.split(",") print(fruits) # ['りんご', 'みかん', 'バナナ'] # スペースで分割(デフォルト) sentence = "Hello World Python" words = sentence.split() print(words) # ['Hello', 'World', 'Python']
用途: CSVデータの処理、文章の単語分割
find() / in - 検索
機能: 文字列内に特定の文字列が含まれるか検索します。
Pythontext = "Pythonは楽しい" # "楽しい" の位置を検索(見つからない場合は-1) position = text.find("楽しい") print(position) # 6 # 存在チェック(in演算子) print("Python" in text) # True print("Java" in text) # False
使い分け:
find(): 位置を知りたい場合in: 存在だけ確認したい場合
8. 文字列フォーマット
f-string(推奨)
Pythonname = "太郎" age = 25 # f-stringで変数を埋め込む message = f"{name}さんは{age}歳です" print(message) # 太郎さんは25歳です # 計算も可能 price = 1000 message = f"合計金額は{price * 1.1}円です" print(message) # 合計金額は1100.0円です
format()メソッド
Pythonname = "太郎" age = 25 message = "{}さんは{}歳です".format(name, age) print(message) # 太郎さんは25歳です
9. 練習問題
問題1(基礎)⭐☆☆
名字と名前を別々の変数に保存し、フルネームを「姓 名」の形式で表示してください(間にスペースを入れる)。
💡 ヒント
+ で文字列を結合します。スペースも " " で文字列として扱います。
✅ 解答例
Pythonfirst_name = "太郎" last_name = "山田" full_name = last_name + " " + first_name print(full_name)
実行結果:
山田 太郎
解説:
" " は半角スペース1つ分の文字列です。+ 演算子で3つの文字列を結合しています。
問題2(基礎)⭐☆☆
「Python」という文字列から、最初の2文字「Py」を取り出して表示してください。
💡 ヒント
スライスを使います。文字列[0:2] で最初から2文字目まで取得できます。
✅ 解答例
Pythontext = "Python" result = text[0:2] print(result) # Py # または print(text[:2]) # Py
実行結果:
Py
解説:
text[0:2] は0番目から2番目の手前(1番目)までを取得します。開始位置を省略すると0から始まります。
問題3(応用)⭐⭐☆
メールアドレス「user@example.com」から、ユーザー名部分(@の前)とドメイン部分(@の後)を別々に取り出して表示してください。
💡 ヒント
split("@")で@を基準に分割- 分割した結果はリストになる
- リストの0番目がユーザー名、1番目がドメイン
✅ 解答例
Pythonemail = "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を使うと、変数を含む文字列を読みやすく作成できます。
- 文字列は変更不可の型であり、数値との連結時には型変換が必要です。