サンプルコード
Python のサンプルコード一覧
Python で「○○するには」を解決するコードサンプル。25 件。
他の言語から探す
カードの実行確認済みは、この言語のコードを実際に実行して出力を確認したことを表す。静的確認は、実行環境を用意できず、構文と公式 API ドキュメントで確認したものである。
2つの日付の差を求めるには
date 同士・datetime 同士を引くと timedelta が返る。date 同士なら days がそのまま日数になるが、datetime 同士の場合 days は切り捨てた日数で、24 時間未満の端数は seconds 側に入る。時間や分の単位でまとめて見たいときは total_seconds() を割るのが確実である。
実行確認済み
文字列が含まれるか調べるには
部分文字列が含まれるかどうかは in 演算子で判定する。比較は既定で大文字小文字を区別するため、区別したくないときは casefold で畳んでから比較する。位置が必要なら find を使うが、見つからない場合は例外ではなく -1 が返る点に注意する。
実行確認済み
配列から重複を除くには
dict はキーの挿入順を保つため、dict.fromkeys を経由すると出現順のまま重複を除ける。順序が不要なら set が最短だが、set は順序を保証しないので並びが要るときは sorted と組み合わせる。
実行確認済み
配列を文字列に連結するには
str.join は「区切り文字」側のメソッドで、引数に渡した反復可能オブジェクトの要素を連結する。要素に数値が混じると TypeError になるため、map(str, ...) で先に文字列化しておく。
実行確認済み
文字列を分割するには
str.split は区切り文字で分けたリストを返す。第2引数の maxsplit は「分割する回数」の上限なので、1 を渡すと要素は 2 個になる。引数なしで呼ぶと連続する空白をまとめて 1 つの区切りとして扱うため、空白区切りのテキストはこちらが扱いやすい。
実行確認済み
配列を条件で絞り込むには
リスト内包表記が最も読みやすく、結果はその場でリストになる。組み込みの filter はイテレータを返すため、表示したり複数回使ったりするなら list へ変換する必要がある。
実行確認済み
ディレクトリ内のファイル一覧を取得するには
Path.iterdir() はディレクトリ直下の項目を Path として順に返す。ディレクトリも混ざるので is_file() で絞り、名前だけ欲しいときは .name を取る。返る順序は OS 任せなので、表示や比較に使うなら sorted() で明示的に並べる。
実行確認済み
ネストしたJSONから値を取り出すには
dict.get の第 2 引数に空の dict を渡して繋ぐと、途中のキーが無くても KeyError にならずに最後の既定値まで到達する。data["server"]["http"] のように添字で辿ると、1 段でも欠けた時点で例外になる。
実行確認済み
HTTPリクエストにヘッダーを付けるには
urllib.request.Request の headers 引数に辞書を渡すと、そのままリクエストヘッダーになる。User-Agent を明示しているのは、GitHub API が User-Agent の無いリクエストを 403 で拒否するためである。
実行確認済み
環境変数を設定するには
os.environ への代入は裏で putenv を呼ぶため、以後に起動する子プロセスへも値が引き継がれる。値は文字列でなければならず、整数を代入すると TypeError になる。env= に辞書を渡した場合は親の環境を引き継がないので、os.environ を展開して差分だけを足すのが安全である。
実行確認済み
.env ファイルを読み込むには
python-dotenv の load_dotenv は .env を読んで os.environ に流し込む。読み込み後の取り出し方は通常の環境変数と変わらない。既に同名の環境変数が設定されている場合はそちらが優先されるため、.env で上書きしたいときは override=True を渡す。
実行確認済み
日付文字列を日付型にするには
strptime は第 2 引数の書式に完全一致した文字列だけを受け取り、合わなければ ValueError を投げる。ISO 8601 と分かっているなら書式を書かずに済む fromisoformat のほうが短く書ける。どちらも文字列にオフセットが含まれていなければ tzinfo は None のままなので、タイムゾーンを伴う計算をする前に aware へ揃える。
実行確認済み
文字列の前後の空白を除去するには
str.strip は前後の空白・タブ・改行・CR をまとめて落とす。引数を渡した場合、それは前置詞や接尾辞ではなく「除去する文字の集合」として扱われるため、"banana".strip("ba") は 'nan' になる。決まった接頭辞・接尾辞だけを外したいときは removeprefix / removesuffix を使う。
実行確認済み
HTTP POSTでJSONを送るには
標準ライブラリの urllib.request で POST を送る。data にバイト列を渡した時点でメソッドは POST になるが、意図を読み取れるように method を明示している。Content-Type を自分で付けるのは、urllib が既定で application/x-www-form-urlencoded を仮定し、受け側が JSON として解釈しないためである。
実行確認済み
ファイルが存在するか調べるには
Path.is_file() はパスが存在し、かつ通常のファイルであるときだけ True を返す。exists() はディレクトリでも True になるため、開くことが前提の判定には is_file() を使う。
実行確認済み
オブジェクトをJSON文字列にするには
json.dumps は既定で非 ASCII 文字を \uXXXX へエスケープするため、日本語をそのまま出したいときは ensure_ascii=False を指定する。indent を渡すと人が読める整形出力になり、省略すれば区切りの詰まった 1 行になる。
実行確認済み
日付を書式付きの文字列にするには
strftime に書式文字列を渡すのが基本形で、f-string の書式指定でも同じ指定子が使える。機械的に読み書きするなら isoformat のほうが安全で、書式のゆらぎを持ち込まずに済む。
実行確認済み
環境変数を読むには
os.environ["KEY"] は未設定だと KeyError を投げる。落としたくないときは get や os.getenv に既定値を渡す。値は常に文字列で返るため、数値として使うなら int() で変換する。
実行確認済み
ファイルを読み込むには
with 文を使うとブロックを抜けた時点でファイルが自動的に閉じられ、クローズ漏れを防げる。encoding は環境によって既定値が変わるため明示する。
実行確認済み
ファイルに書き込むには
with 文を使うと書き込み後にファイルが自動で閉じられ、バッファのフラッシュ漏れを防げる。モード "w" は既存内容を上書きするため、末尾に足したいときは "a" を使う。
実行確認済み
HTTP GETリクエストを送るには
標準ライブラリの urllib.request だけで GET は送れるため、依存を増やしたくない場面ではこれで足りる。with で開くのはレスポンスのソケットを確実に閉じるため、timeout を渡すのは相手が応答しないときに無限に待たないためである。
実行確認済み
配列をソートするには
sorted は新しいリストを返し、list.sort は元のリストをその場で並べ替える。並べ替えの基準を変えたいときは key に関数を渡し、降順にするなら reverse=True を指定する。
実行確認済み
現在時刻を取得するには
datetime.now() を引数なしで呼ぶと、タイムゾーン情報を持たない naive な値が返る。UTC 基準で扱うなら datetime.now(timezone.utc) のように tz を渡す。naive と aware を混ぜて比較すると TypeError になるため、どちらで統一するかを先に決めておく。
実行確認済み
JSONをパースするには
ファイルから読むときは json.load、既に文字列になっているときは json.loads を使う。encoding を明示するのは、既定値が環境依存で日本語が文字化けする事故を防ぐためである。
実行確認済み
文字列を置換するには
str.replace は元の文字列を変更せず、置換後の新しい文字列を返す。既定で全置換になるため、回数を制限したいときは第3引数 count を渡す。
実行確認済み