Python 逆引き集 | 字列操作:文字列の長さを取得する

Python Python
スポンサーリンク
スポンサーリンク

文字列の長さを取得するとはどういうことか

Pythonで文字列を扱うとき、「この文字列は何文字あるのか」を知ることはとても重要です。 入力チェック、バリデーション、ログの整形、UIの制約、セキュリティ対策など、さまざまな場面で「長さ」が関わってきます。

Pythonでは、文字列の長さを調べるために len() という組み込み関数を使います。 ここでは、len() の基本から、初心者がつまずきやすいポイント、実務・セキュリティの観点での注意点までをステップバイステップで丁寧に解説していきます。

len()の基本的な使い方をステップバイステップで確認する

1. シンプルな例で長さを取得する

text = "Python"
length = len(text)
print(length)  # 6
Python

len(文字列) と書くだけで、その文字列に含まれる「文字数」が返ってきます。 この場合 "Python" は6文字なので、len(text) は 6 になります。

2. 空文字列の長さ

empty = ""
print(len(empty))  # 0
Python

空文字列は「文字が1つもない」ので、長さは 0 です。 入力チェックなどで「何も入力されていないか」を判定するときに、 len(text) == 0not text といった形で使われます。

3. 日本語を含む文字列の長さ

msg = "こんにちは"
print(len(msg))  # 5
Python

Pythonの文字列は「文字単位」で扱われるため、 日本語でも1文字ずつカウントされます。

文字列の長さを使った基本的なチェック

1. 入力文字数の制限

username = "Taro"

if len(username) < 3:
    print("ユーザー名は3文字以上にしてください")
Python

このように、

  • 最小文字数
  • 最大文字数 を条件として、入力の妥当性をチェックできます。

2. パスワードの長さチェック

password = "abc123"

if len(password) < 8:
    print("パスワードは8文字以上にしてください")
else:
    print("パスワードの長さはOKです")
Python

長さチェックは、セキュリティの基本中の基本です。 短すぎるパスワードは総当たり攻撃に弱くなるため、 「最低文字数を決める」 ことが重要です。

3. メッセージの長さ制限

message = "こんにちは!"

if len(message) > 100:
    print("メッセージが長すぎます")
Python

チャットやコメント機能などで、 「1件あたりの文字数制限」を設けるときにも len() が使われます。

len()の挙動をもう少し深掘りする

1. スペースや改行も「文字」として数えられる

text = "Hello World"
print(len(text))  # 11(スペースも1文字)

text2 = "Hello\nWorld"
print(len(text2))  # 11(\n も1文字)
Python
  • 半角スペース " "
  • 改行 \n
  • タブ \t

なども、すべて「1文字」としてカウントされます。 そのため、見た目よりも文字数が多くなることがあります。

2. 絵文字や特殊文字を含む場合

emoji = "😊"
print(len(emoji))  # 1
Python

多くの環境では、絵文字も1文字として扱われます。 ただし、環境やエンコードによっては、 「画面上の見た目」と「内部の文字数」がずれるケースもあるため、 UI設計では注意が必要です。

len()と他の型との関係(初心者がつまずきやすいポイント)

1. リストやタプルにも使える

items = [1, 2, 3]
print(len(items))  # 3
Python

len() は文字列だけでなく、

  • リスト
  • タプル
  • 辞書
  • 集合

などにも使えます。 それぞれ「要素数」を返します。

2. 数値には使えない

n = 123
# len(n)  # ❌ TypeError
Python

数値は「長さ」という概念を持たないため、 len() を使うとエラーになります。

数値の桁数を知りたい場合は、 いったん文字列に変換してから len() を使います。

n = 12345
digits = len(str(n))
print(digits)  # 5
Python

3. None にも使えない

value = None
# len(value)  # ❌ TypeError
Python

None は「何もない」という特別な値であり、 長さという概念を持ちません。 len() を使う前に、 「本当に文字列やコレクションなのか」 を確認することが大切です。

セキュリティと品質の観点から見た「長さ取得」の重要性

1. 入力バリデーションの基本

外部から受け取るデータ(ユーザー入力、APIレスポンスなど)は、

  • 長すぎる
  • 短すぎる
  • 想定外の形式

であることがよくあります。

comment = input("コメント: ")

if len(comment) == 0:
    print("コメントが空です")
elif len(comment) > 500:
    print("コメントが長すぎます")
else:
    print("コメントを受け付けました")
Python

このように、 「長さを条件にしたチェック」 は、 セキュリティと品質の両面で非常に重要です。

2. DoS的な入力を防ぐ

もし、文字列の長さに制限を設けないまま処理を続けると、

  • 極端に長い文字列が送られる
  • メモリやCPU時間を大量に消費する
  • サーバーが重くなる、最悪落ちる

といった問題につながる可能性があります。

そのため、

if len(data) > 10000:
    raise ValueError("入力が長すぎます")
Python

のように、 「常識的な上限を設ける」 ことが防御策として重要です。

3. ログやファイルサイズの管理

log_line = f"[INFO] {message}"

if len(log_line) > 200:
    print("ログが長すぎます")
Python

ログやファイルに書き込む文字列の長さを意識することで、

  • ファイルサイズの肥大化
  • ログの可読性低下 を防ぐことができます。

文字列の長さ取得のテンプレートと練習用コード

基本テンプレート

text = "Hello"
length = len(text)
print(length)
Python

入力チェックテンプレート

def validate_username(name):
    if len(name) < 3:
        return "ユーザー名は3文字以上にしてください"
    if len(name) > 20:
        return "ユーザー名は20文字以内にしてください"
    return "OK"
Python

パスワード長さチェックテンプレート

def validate_password(password):
    if len(password) < 8:
        return "パスワードは8文字以上にしてください"
    return "OK"
Python

数値の桁数を調べるテンプレート

def digit_count(n):
    return len(str(n))

print(digit_count(12345))  # 5
Python

まとめ

  • 文字列の長さは len(文字列) で取得でき、空文字列は 0 になります。
  • スペースや改行、絵文字も「1文字」としてカウントされることを理解しておくと、挙動を予測しやすくなります。
  • len() は文字列だけでなく、リストや辞書などにも使えますが、数値や None には使えません。
  • 入力バリデーションやパスワードチェック、ログ・ファイルの管理など、長さのチェックはセキュリティと品質の両面で非常に重要です。
  • 「長さを意識してコードを書く」習慣を持つことで、予期せぬバグや脆弱性を防ぎやすくなります。

文字列の長さ取得は一見シンプルですが、 その裏には「入力の安全性」「システムの安定性」「UIの設計」といった重要な要素が隠れています。 ここを丁寧に押さえておくと、Pythonでの文字列処理が一段と信頼できるものになります。

タイトルとURLをコピーしました