実務で最も頻繁に扱うのが「文字列」です!開発だけでなく、ユーザー入力の処理、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" を様々な方法で変換して出力してください。
出力すべきもの:
- 元の文章
- すべて大文字に変換
- すべて小文字に変換
- 各単語の最初の文字だけ大文字に変換
💡 ヒント
文字列メソッドを使ってください:
-
.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
📝 今日学んだこと
-
文字列を作る:
"または'で囲む -
連結:
+(連結)、*(繰り返し) - メソッド: upper()、lower()、strip()、split()、replace()
- フォーマット: f-stringが最も便利!
- len(): 文字列の長さを取得
🔗 関連資料
📚 前回の学習
Day 5: 数値を扱う ⭐
前回は、intとfloatで数値を扱う方法を学びました!
📚 次回の学習
Day 7: リストの基礎 (list) ⭐⭐
次回は、複数のデータを一度に入れるリストを学びます!
🚀 遅いと思ったときが最も早いときです! 🚀
Day 6/100 | Phase 1: Pythonを始める | #100DaysOfPython
