1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python 100日チャレンジ】Day 6 - 文字列を扱う (str)

Last updated at Posted at 2025-10-29

python-100days-day06-strings.png

実務で最も頻繁に扱うのが「文字列」です!開発だけでなく、ユーザー入力の処理、APIデータのパース、ログ解析、CSVファイルの整形など…あらゆる場面で登場します。
自動化スクリプトを作成して業務を効率化する際にも、文字列操作は欠かせませんね😊
upper()、lower()、split()、replace()、f-string …これらを上手に使いこなせば、やりたいことをシンプルに実現できます。
今日の内容をしっかり確認していきましょう!
(15分で読了 ⭐⭐)

🎯 学習目標 1: 文字列(str)を作る

一言で説明

文字列 = 文字の集まり(テキスト)

Pythonで文字列は引用符で囲んだテキストです。

文字列を作る

# ダブルクォート
name = "山田太郎"

# シングルクォート
city = '東京'

# どちらも同じです!
message1 = "こんにちは"
message2 = 'こんにちは'

💡 ダブルクォートとシングルクォートは同じ機能です!

複数行の文字列

長いテキストは3つの引用符で

# 3つのダブルクォート
message = """こんにちは。
複数行の
テキストを書けます。"""

# 3つのシングルクォート
message2 = '''1行目
2行目
3行目'''

print(message)

出力:

こんにちは。
複数行の
テキストを書けます。

🎯 学習目標 2: 文字列を連結する

足し算 (+) で連結

first = "山田"
last = "太郎"

name = first + last
print(name)  # 山田太郎

# スペースを追加
name = first + " " + last
print(name)  # 山田 太郎

繰り返し (*)

star = ""
line = star * 5

print(line)  # ★★★★★

複数を一度に

first = "山田"
last = "太郎"
city = "東京"

# カンマで連結(自動的にスペースを追加)
print(first, last, city)  # 山田 太郎 東京

# +で連結(スペースなし)
print(first + last + city)  # 山田太郎東京

🎯 学習目標 3: 文字列メソッドを使う

大文字小文字変換

text = "Hello Python"

# すべて大文字に
upper = text.upper()
print(upper)  # HELLO PYTHON

# すべて小文字に
lower = text.lower()
print(lower)  # hello python

# 最初の文字だけ大文字に
title = text.title()
print(title)  # Hello Python

空白を削除

text = "   こんにちは   "

# 両側の空白を削除
clean = text.strip()
print(clean)  # "こんにちは"

# 左側の空白のみ削除
left = text.lstrip()
print(left)  # "こんにちは   "

# 右側の空白のみ削除
right = text.rstrip()
print(right)  # "   こんにちは"

文字列を分割

# 空白で分割
text = "りんご バナナ ぶどう"
fruits = text.split()
print(fruits)  # ['りんご', 'バナナ', 'ぶどう']

# カンマで分割
text2 = "東京,大阪,名古屋"
cities = text2.split(",")
print(cities)  # ['東京', '大阪', '名古屋']

文字列を検索

text = "Pythonは楽しいです"

# 存在を確認
print("Python" in text)     # True
print("Java" in text)       # False

# 位置を検索
pos = text.find("楽しい")
print(pos)  # 7(7番目の位置にある)

# なければ-1
pos2 = text.find("難しい")
print(pos2)  # -1

文字列を置換

text = "Pythonは難しいです"

# 置換
new_text = text.replace("難しいです", "楽しいです")
print(new_text)  # Pythonは楽しいです

🎯 学習目標 4: 文字列フォーマットを学ぶ

f-string(推奨!)

name = "山田太郎"
age = 25

# f-stringを使用
message = f"名前: {name}、年齢: {age}"
print(message)  # 名前: 山田太郎、年齢: 25

# 計算も可能
print(f"来年の年齢: {age + 1}")  # 来年の年齢: 26

.format() メソッド

name = "山田太郎"
age = 25

message = "名前: {}、年齢: {}".format(name, age)
print(message)  # 名前: 山田太郎、年齢: 25

% フォーマット(古い方式)

name = "山田太郎"
age = 25

message = "名前: %s、年齢: %d" % (name, age)
print(message)  # 名前: 山田太郎、年齢: 25

💡 f-stringをお勧めします!

  • 最も新しい方式
  • 読みやすく簡潔
  • 高速

🎯 学習目標 5: 文字列操作の応用

改行する

文字列内で改行する方法:

# 方法 1: \nを使用(推奨)
print("1行目\n2行目")

# 方法 2: 複数回print
print("1行目")
print("2行目")

# 方法 3: 3つの引用符
text = """1行目
2行目"""
print(text)

出力:

1行目
2行目

文字列の長さを取得

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

text = "こんにちは"
length = len(text)
print(f"長さ: {length}")  # 長さ: 5

# 英語も同様
name = "Python"
print(len(name))  # 6

特定の文字をカウント

.count() メソッドで特定の文字が何個あるかを数えられます:

text = "banana"
count = text.count("a")
print(f"'a'の数: {count}")  # 'a'の数: 3

# 単語も数えられる
sentence = "Python is fun. Python is easy."
print(sentence.count("Python"))  # 2

文字列スライシング(プレビュー)

文字列の一部を切り出す方法です。Day 7で詳しく学びます!

text = "Python"

# [開始:終了] - 開始位置から終了位置の前まで
print(text[0:3])  # Pyt(0, 1, 2番目)
print(text[2:5])  # tho(2, 3, 4番目)

# [開始:] - 開始位置から最後まで
print(text[3:])   # hon(3番目から最後まで)

# [:終了] - 最初から終了位置の前まで
print(text[:3])   # Pyt(最初から2番目まで)

実用例:

phone = "01012345678"

# 電話番号を区切って切り出す
area = phone[0:3]     # 010
front = phone[3:7]    # 1234
back = phone[7:]      # 5678

print(f"{area}-{front}-{back}")  # 010-1234-5678

⚠️ 注意: インデックスは0から始まります!

  • text[0] = 最初の文字
  • text[1] = 2番目の文字

💻 実習例

例1: 自己紹介を作る

name = "山田太郎"
age = "25"
job = "学生"

# 方法 1: カンマで連結
print("名前:", name)
print("年齢:", age)
print("職業:", job)

# 方法 2: +で連結
intro = "名前: " + name + "、年齢: " + age + "、職業: " + job
print(intro)

出力:

名前: 山田太郎
年齢: 25
職業: 学生
名前: 山田太郎、年齢: 25、職業: 学生

例2: メールアドレスを作る

username = "hong"
domain = "example.com"

email = username + "@" + domain
print(email)  # hong@example.com

例3: 区切り線を作る

# 華やかな区切り線
line1 = "=" * 30
line2 = "-" * 30
line3 = "*" * 30

print(line1)
print("重要なメッセージ")
print(line1)

出力:

==============================
重要なメッセージ
==============================

💡 実践のヒントと注意事項

💡 Tip 1: 引用符の中の引用符

# ❌ エラー発生!
message = "He said "Hello""

# ✅ 解決方法 1: 異なる引用符を使用
message = "He said 'Hello'"

# ✅ 解決方法 2: バックスラッシュ(\)を使用
message = "He said \"Hello\""

print(message)  # He said "Hello"

💡 Tip 2: 文字列と数値を結合

name = "山田太郎"
age = 25

# ❌ エラー発生!
message = name + "の年齢は " + age

# ✅ 解決方法 1: str()で変換
message = name + "の年齢は " + str(age)

# ✅ 解決方法 2: f-stringを使用(推奨)
message = f"{name}の年齢は {age}"

print(message)  # 山田太郎の年齢は 25

💡 Tip 3: 文字列は変更不可

text = "Python"

# ❌ エラー発生!(文字列は変更不可)
text[0] = "J"

# ✅ 新しい文字列を作成
new_text = "J" + text[1:]
print(new_text)  # Jython

🧪 練習問題

問題 1: 電話番号フォーマット

電話番号を見やすくしてください。

  • 入力: "01012345678"
  • 出力: "010-1234-5678"
💡 ヒント

上で学んだ文字列スライシングを使ってください!

  • phone[0:3] - 010
  • phone[3:7] - 1234
  • phone[7:] - 5678
  • -で連結
✅ 正解
phone = "01012345678"

# 方法 1: スライシング
formatted = phone[0:3] + "-" + phone[3:7] + "-" + phone[7:]
print(formatted)  # 010-1234-5678

# 方法 2: f-string
formatted2 = f"{phone[0:3]}-{phone[3:7]}-{phone[7:]}"
print(formatted2)  # 010-1234-5678

問題 2: 名前を飾る

自分の名前を星(★)と線(=)で綺麗に飾って出力してください。

要件:

  • 星5個を最初と最後の行に出力
  • 長い線(=を20個)で区切り線を作る
  • 真ん中に「OOOさん、ようこそ!」というメッセージを出力
💡 ヒント
  • *を使って星を繰り返す: "★" * 5
  • =を繰り返して線を作る: "=" * 20
  • f-stringで名前を入れる: f"{name}さん、ようこそ!"
✅ 正解
name = "山田太郎"

# 星で飾る
star = "" * 5
line = "=" * 20

print(star)
print(line)
print(f"   {name}さん、ようこそ!")
print(line)
print(star)

出力:

★★★★★
====================
   山田太郎さん、ようこそ!
====================
★★★★★

問題 3: 大文字小文字を変換

次の英語文章 "Hello Python World" を様々な方法で変換して出力してください。

出力すべきもの:

  1. 元の文章
  2. すべて大文字に変換
  3. すべて小文字に変換
  4. 各単語の最初の文字だけ大文字に変換
💡 ヒント

文字列メソッドを使ってください:

  • .upper() - すべて大文字に
  • .lower() - すべて小文字に
  • .title() - 各単語の最初の文字だけ大文字に
✅ 正解
text = "Hello Python World"

print("元の文章:", text)
print("大文字:", text.upper())
print("小文字:", text.lower())
print("単語の最初の文字だけ大文字:", text.title())

出力:

元の文章: Hello Python World
大文字: HELLO PYTHON WORLD
小文字: hello python world
単語の最初の文字だけ大文字: Hello Python World

📝 今日学んだこと

  1. 文字列を作る: " または 'で囲む
  2. 連結: +(連結)、*(繰り返し)
  3. メソッド: upper()、lower()、strip()、split()、replace()
  4. フォーマット: f-stringが最も便利!
  5. len(): 文字列の長さを取得

🔗 関連資料

📚 前回の学習

Day 5: 数値を扱う

前回は、intとfloatで数値を扱う方法を学びました!

📚 次回の学習

Day 7: リストの基礎 (list) ⭐⭐

次回は、複数のデータを一度に入れるリストを学びます!

🚀 遅いと思ったときが最も早いときです! 🚀

Day 6/100 | Phase 1: Pythonを始める | #100DaysOfPython

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?