Python講座 / 文字列・スライス・書式設定を使う

文字列は順序を持つテキストで、インデックスやスライスで一部を取り出せます。文字列そのものは変更できないため、strip()やreplace()の結果を使うか再代入する必要があります。

位置とスライスの終端を確認する

先頭のインデックスは0、末尾は-1です。text[start:stop]はstopの手前までを取り出します。範囲外の単独インデックスはエラーになりますが、スライスは取り出せる部分を返します。

text = "Python"
print(text[0], text[-1], text[1:4])

表示はP n ythです。終端を含まないことを確認すると、一文字ずれる間違いを減らせます。len()が数えるのはUnicodeのコードポイントで、バイト数ではありません。画面上で一文字に見える絵文字などが、複数のコードポイントからできている場合もあります。

文字列の整理と表示を一つの例で動かす

strings.pyへ全体コードをUTF-8で保存し、仮想環境でpython strings.pyを実行します。例のlunchなどは入力形式を確認するための英語データです。

raw = "  lunch,8000  "
clean = raw.strip()
name, amount_text = clean.split(",")
amount = int(amount_text)
print(clean)
print(name.upper())
print(f"{name}: {amount:,} KRW")
print("-".join(["2026", "10", "17"]))

予想結果です。

lunch,8000
LUNCH
lunch: 8,000 KRW
2026-10-17

分割・結合・表示の道具を選ぶ

split()は文字列をリストへ分割し、join()は文字列を区切り文字で連結します。join()に渡す各要素は文字列である必要があるため、数値は意図して変換します。引用符の中にコンマを含められるCSVでは、単純なsplit(",")をパーサーの代わりにせず、csvモジュールを使います。

f文字列は人に見せる出力を読みやすくしますが、外部入力をSQLへ埋め込む用途とは別です。表示の整形とデータベースのパラメーター化は異なる問題なので、SQLの値はMariaDB接続の例のように分けて渡します。

原文と変換後を区別して境界を試す

raw.strip()を呼ぶだけで結果を捨てると、rawは変わりません。replace()も同様です。rawとcleanのように名前を分けると違いを追いやすくなります。元の値を置き換える目的なら、返り値を代入します。

前後の空白を増やし、cleanが同じになるか確認します。コンマをなくすと二変数への展開に失敗するので、観察後は戻してください。text[0]への代入は、文字列をその場で変更できないためTypeErrorになります。

ここで行うのは既知の形式の正規化であり、任意の入力を正しいと保証する検証ではありません。フィールド数や値の意味を確認する処理は、空白の除去と分けて考えます。

split(",") は引用符内のカンマや複数行のCSVフィールドを解釈しません。CSVにはcsvモジュール、SQLの値にはクエリーパラメーターを使います。文字列を分割する処理と、ファイル形式や問い合わせ言語の構文を扱う処理は役割が異なります。

関連する公式リファレンス