ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
どちらでも同じ
a = 'こんにちは'
b = "こんにちは"
print(a == b) # True
print(a is b) # True 同じ文字列オブジェクトとして扱われる
print(type(a)) # <class 'str'>
name = "田中"
print(f'{name} さん') # 田中 さん f-string はどちらでも同じ
print(f"{name} さん") # 田中 さん
シェルスクリプトや PHP では「シングルは変数展開しない」という違いがありますが、Python にその区別はありません。変数を埋め込みたい場合は、どちらのクォートでも f を前に付けます。
使い分けの唯一の基準
# 中にシングルが出るならダブルで囲む
print("It's fine")
# 中にダブルが出るならシングルで囲む
print('彼は "はい" と答えた')
# 両方出るなら三重クォート、またはエスケープ
print("""It's "both" here""")
エスケープが必要になったら、囲むクォートを変えれば消せないかを先に考えます。バックスラッシュが減るほど読みやすくなります。
三重クォート
text = """1 行目
2 行目
3 行目"""
print(text)
# 先頭の改行を入れたくないときは行末に \ を置く
sql = """
SELECT id, name
FROM users
WHERE active = 1
"""
print(sql.strip())
def area(width, height):
"""長方形の面積を返す。""" # docstring はダブルの三重クォート
return width * height
PEP 257 は docstring に """ を使うことを定めています。1 行だけの docstring でも ' ではなく """ にします。
三重クォートをコメントアウト代わりに使わないでください。関数やクラスの先頭以外に置いた三重クォートは docstring にならず、実行時に評価される無駄な文字列リテラルとして残ります。
プロジェクトで統一する
pip install black
black . # すべてダブルクォートに統一される(エスケープが増える場合を除く)
black は「ダブルに変えるとエスケープが増える」場合だけシングルを残します。クォートの流儀を人間が議論しても価値が出ないので、ツールに任せて設定は pyproject.toml に 1 か所だけ書きます。
[tool.ruff.format]
quote-style = "double" # "single" にすればシングル統一もできる
JSON との関係
import json
data = {"name": "田中", "age": 30}
print(str(data)) # {'name': '田中', 'age': 30} ← シングル。JSON ではない
print(json.dumps(data)) # {"name": "田中", "age": 30}
print(json.dumps(data, ensure_ascii=False)) # {"name": "田中", "age": 30}
json.loads("{'a': 1}") # JSONDecodeError: Expecting property name enclosed in double quotes
json.loads('{"a": 1}') # {'a': 1} OK
JSON の仕様はダブルクォートのみです。print(dict) の見た目をそのままコピーして API に投げると必ず失敗します。文字列化には json.dumps() を使ってください(辞書型を文字列に変換する方法)。
その他のクォートの前置き
| 書き方 | 意味 | 使う場面 |
|---|---|---|
f"..." | f-string。{} の中が式として評価される | 変数の埋め込み |
r"..." | raw 文字列。バックスラッシュをそのまま扱う | 正規表現、Windows のパス |
b"..." | バイト列 | バイナリ、通信のボディ |
rf"..." | 組み合わせ | パターンに変数を埋める |
import re
# raw 文字列なら正規表現がそのまま書ける
print(re.findall(r"\d+", "a12b345")) # ['12', '345']
# f-string の中でクォートを使う(Python 3.12 以降は同じ種類でも書ける)
d = {"name": "田中"}
print(f"名前は {d['name']} です") # 外がダブルなら中はシングル
# 波かっこそのものを出したいときは 2 個重ねる
print(f"{{ これは波かっこ }}") # { これは波かっこ }
文字列の連結
# 隣り合ったリテラルは自動で連結される(クォートの種類が違っても可)
message = ("長い文章を "
'かっこの中で '
"分けて書ける")
print(message) # 長い文章を かっこの中で 分けて書ける
# リストの中でカンマを忘れると意図せず連結される
items = [
"りんご"
"みかん", # ← カンマ忘れ。1 要素 'りんごみかん' になる
"ぶどう",
]
print(items) # ['りんごみかん', 'ぶどう']
自動連結は長い文を分けて書くのに便利ですが、リストや引数の中でカンマを忘れたときに気づきにくいという副作用があります。要素数が合わないときはここを疑ってください。
エスケープ文字の一覧
| 書き方 | 意味 |
|---|---|
バックスラッシュ + n | 改行 |
バックスラッシュ + t | タブ |
バックスラッシュ + " | ダブルクォートそのもの |
バックスラッシュ + ' | シングルクォートそのもの |
| バックスラッシュ 2 個 | バックスラッシュそのもの |
\u3042 | Unicode のコードポイント指定(「あ」) |
print("1 行目\n2 行目") # 改行が入る
print(r"1 行目\n2 行目") # raw なのでそのまま表示される
print("\u3042") # あ
# Windows のパスは raw 文字列にする
path = r"C:\Users\taro\Desktop" # \U や \t が誤解釈されない
print(path)
"C:\Users\..." と普通の文字列で書くと、\U が Unicode 指定として解釈され SyntaxError になります。Windows のパスと正規表現は r"..." と覚えてください。
クォートを含む文字列を作る
name = "田中"
# HTML の属性値を組み立てる
print(f'<a href="/user/{name}">{name}</a>')
# SQL を文字列連結で作らない(SQL インジェクションになる)
# cur.execute(f"SELECT * FROM users WHERE name = '{name}'") ← 危険
# プレースホルダを使う
cur.execute("SELECT * FROM users WHERE name = %s", (name,))
クォートを自分で組み立てて SQL やコマンドを作らないでください。値に ' が含まれるだけで構文が壊れ、意図的に仕込まれれば任意の SQL を実行されます。パラメータは必ずライブラリに渡します。
文字列を囲むもの以外の記法
name, price = "りんご", 128
print(f"{name} は {price} 円") # f-string(推奨)
print("{} は {} 円".format(name, price)) # format メソッド
print("%s は %d 円" % (name, price)) # 古い書き方
# 桁揃えや書式も f-string でできる
print(f"{price:,}") # 128 3 桁区切り
print(f"{price:>8}") # 128 右寄せ 8 桁
print(f"{3.14159:.2f}") # 3.14 小数点以下 2 桁
# ログには f-string を使わない(出力しないときも文字列を作ってしまう)
import logging
logging.info("%s は %d 円", name, price)
通常のコードでは f-string が最も読みやすく、速度も有利です。ログ出力だけは例外で、遅延評価される %s 形式が推奨されています。
関連
- 文法 — 親カテゴリ
- 基本的なルール — PEP 8 とフォーマッタ
- 文字列演算子 — 連結と f-string
- 文字列 — 文字列の組み込み関数
- 辞書型を文字列に変換する方法
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- 基本的なルール
- 変数
- 演算子
- 型
- 標準ライブラリ
- 外部ライブラリ
- 制御構文
- リスト(配列)
- タプル
- セット
- 辞書(dict)
- クラスとメソッド
- 継承の概念と必要性
- 継承の構文
- コンストラクタ
- cookieの値の設定と取得
- 例外処理
- 例外を文字列で出力する方法
- httpリクエスト(curl)をする方法
- Responseオブジェクトの中身の確認
- 変数が空かどうか判定する方法
- タイムゾーンの設定と現在日時の取得と文字列化
- シングルクォーテーションとダブルクォーテーションの違い
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?