文字列を作るとはどういうことか
Pythonでプログラムを書くとき、文字列(str) はほぼ必ず登場する基本データ型です。 メッセージ表示、ログ出力、ファイル入出力、API通信、ユーザー入力など、あらゆる場面で文字列を扱います。
ここでは、「文字列を作る」というテーマに絞って、
- いちばん基本的な作り方
- 変数を埋め込んだ文字列の作り方
- 複数の文字列を組み立てる方法
- セキュリティやバグの観点で注意すべきポイント をステップバイステップで丁寧に解説していきます。
文字列の基本的な作り方をステップバイステップで確認する
1. シングルクォートとダブルクォート
Pythonでは、文字列は ‘(シングルクォート) か “(ダブルクォート) で囲んで作ります。
message = "こんにちは"
name = 'Taro'
Pythonどちらを使っても意味は同じですが、
- 文字列の中に ” を含めたいときは ‘ で囲む
- 文字列の中に ‘ を含めたいときは ” で囲む
といった使い分けをすると書きやすくなります。
quote1 = "I'm fine."
quote2 = '"Hello," he said.'
Python2. 空文字列を作る
empty = ""
Python空文字列は「文字が1つも入っていない文字列」です。 後で文字を追加したり、条件分岐で「何も入力されていないか」を判定するときに使います。
3. 数値を文字列に変換して作る
age = 20
text = str(age) # "20"
Python数値をそのまま文字列に足そうとするとエラーになるため、 数値 → 文字列 の変換は非常に重要です。
変数を埋め込んだ文字列を作る(f文字列が最重要)
1. f文字列(フォーマット文字列)の基本
Python 3.6以降では、f文字列(f-string) が標準的な書き方です。
name = "Taro"
age = 20
message = f"{name} は {age} 歳です"
print(message) # Taro は 20 歳です
Python文字列の中に {} を書き、その中に変数や式を書くことで、 「値を埋め込んだ文字列」を簡潔に作ることができます。
2. 式もそのまま書ける
price = 100
tax = 0.1
text = f"税込価格は {price * (1 + tax)} 円です"
Python計算式や関数呼び出しも {} の中に書けるため、 「一度変数に入れてから文字列にする」という手間を減らせます。
3. 深掘り:f文字列が推奨される理由
- 可読性が高い(何を埋め込んでいるか一目で分かる)
+で文字列をつなぐより安全で分かりやすい- format() より短く書ける
初心者のうちから 「変数を埋め込むときは f文字列」 という習慣を持っておくと、 後々のコードの読みやすさが大きく変わります。
複数の文字列を組み立てて作る方法
1. + 演算子でつなぐ
first = "Hello"
second = "World"
message = first + " " + second # "Hello World"
Pythonシンプルですが、たくさんつなぐと読みにくくなります。 また、数値を混ぜるときは str() が必要になるため、 f文字列の方が実務では好まれます。
2. join() でまとめてつなぐ
複数の文字列を「区切り文字」でつなぎたいときは、join() が便利です。
words = ["Python", "で", "文字列を", "作る"]
sentence = " ".join(words)
Python" ".join(words)→ リストの要素をスペース区切りでつなぐ",".join(words)→ カンマ区切りでつなぐ
ログやCSV、メッセージの組み立てなどで頻繁に使われます。
3. 改行を含む文字列を作る
text = "1行目\n2行目\n3行目"
print(text)
Python\n は「改行」を表す特殊な文字(エスケープシーケンス)です。 複数行のメッセージやファイル内容を作るときに使います。
複数行の文字列を作る(長い文章やテンプレート向け)
1. 三重クォートで作る
message = """こんにちは
Pythonの学習を始めましょう。
これは複数行の文字列です。"""
Python""" ... """ や ''' ... ''' で囲むと、 改行を含む長い文字列をそのまま書くことができます。
2. テンプレート的に使う
name = "Taro"
body = f"""こんにちは、{name}さん
このメールはPythonから自動送信されています。
よろしくお願いします。
"""
print(body)
Pythonメール本文やヘルプメッセージなど、 「人間が読む長文」をコードに埋め込むときに非常に便利です。
文字列の性質(イミュータブル)を理解しておく
1. 文字列は「変更できない」
Pythonの文字列は イミュータブル(immutable) です。 つまり、一度作った文字列の中身を直接書き換えることはできません。
text = "Python"
# text[0] = "J" # ❌ エラー
Python変更したい場合は、新しい文字列を作る必要があります。
text = "Python"
new_text = "J" + text[1:] # "Jython"
Python2. 深掘り:なぜイミュータブルが重要なのか
- 予期せぬ変更が起きないため、安全性が高い
- 辞書のキーなどに安心して使える
- 内部的な最適化がしやすい
「文字列は作ったら変えられない」という前提を持っておくと、 バグの原因を減らすことができます。
ユーザー入力や外部データから文字列を作るときの注意点
1. input() は必ず文字列を返す
value = input("数字を入力してください: ")
print(type(value)) # <class 'str'>
Python見た目が数字でも、中身は文字列です。 計算に使う場合は、必ず int() や float() で変換します。
num = int(value)
Python2. 外部データはそのまま信用しない
APIレスポンスやファイルから読み込んだ文字列は、
- 予期しない文字が含まれている
- 改行やタブが紛れ込んでいる
- エスケープが必要な記号が含まれている
といったことがよくあります。
ログや画面表示に使う前に、
strip()で前後の空白を削るreplace()で危険な文字を置き換える などの前処理を行うことが、セキュリティ面でも重要です。
文字列を作るときに意識したいセキュリティと品質
1. 文字列連結でSQLやコマンドを組み立てない
query = "SELECT * FROM users WHERE name = '" + user_input + "'"
Pythonこのような書き方は、SQLインジェクションなどの攻撃に弱くなります。 実務では、プレースホルダや専用のライブラリを使うべきですが、 「文字列連結で危険なものを作らない」という意識は、 初心者のうちから持っておくと良いです。
2. ログ出力用の文字列は情報量と安全性のバランスを取る
log = f"user={user_id}, action={action}, ip={ip}"
Pythonログに何を含めるかは、
- デバッグしやすさ
- 個人情報保護
- セキュリティ
のバランスが重要です。 文字列を作るときに「誰がどこで見るか」を意識する習慣を持つと、 安全なシステム設計につながります。
文字列を作るためのテンプレートと練習用コード
基本的な文字列作成テンプレート
text = "こんにちは"
name = "Taro"
message = f"{name} さん、{text}"
Python数値を含む文字列テンプレート
count = 5
msg = f"現在の件数は {count} 件です"
Pythonjoin() を使った組み立てテンプレート
items = ["apple", "banana", "orange"]
line = ", ".join(items) # "apple, banana, orange"
Python複数行メッセージテンプレート
user = "Taro"
body = f"""こんにちは、{user}さん
このメッセージはPythonから送信されています。
またのご利用をお待ちしています。
"""
Pythonまとめ
- 文字列は
'...'や"..."で作り、空文字列や数値からの変換もよく使います。 - 変数や式を埋め込んだ文字列を作るときは、f文字列が最も読みやすく安全です。
- 複数の文字列を組み立てるときは、
+よりjoin()や f文字列を使うと品質が上がります。 - 文字列はイミュータブルであり、「変更したいときは新しい文字列を作る」という前提が重要です。
- ユーザー入力や外部データから文字列を作るときは、型変換や前処理、セキュリティを意識する必要があります。
文字列を「ただのテキスト」ではなく、「データとして設計するもの」として扱えるようになると、 Pythonでの開発が一気に安定して、読みやすく安全なコードを書けるようになります。

