文字列の長さを取得するとはどういうことか
Pythonで文字列を扱うとき、「この文字列は何文字あるのか」を知ることはとても重要です。 入力チェック、バリデーション、ログの整形、UIの制約、セキュリティ対策など、さまざまな場面で「長さ」が関わってきます。
Pythonでは、文字列の長さを調べるために len() という組み込み関数を使います。 ここでは、len() の基本から、初心者がつまずきやすいポイント、実務・セキュリティの観点での注意点までをステップバイステップで丁寧に解説していきます。
len()の基本的な使い方をステップバイステップで確認する
1. シンプルな例で長さを取得する
text = "Python"
length = len(text)
print(length) # 6
Pythonlen(文字列) と書くだけで、その文字列に含まれる「文字数」が返ってきます。 この場合 "Python" は6文字なので、len(text) は 6 になります。
2. 空文字列の長さ
empty = ""
print(len(empty)) # 0
Python空文字列は「文字が1つもない」ので、長さは 0 です。 入力チェックなどで「何も入力されていないか」を判定するときに、 len(text) == 0 や not text といった形で使われます。
3. 日本語を含む文字列の長さ
msg = "こんにちは"
print(len(msg)) # 5
PythonPythonの文字列は「文字単位」で扱われるため、 日本語でも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
Pythonlen() は文字列だけでなく、
- リスト
- タプル
- 辞書
- 集合
などにも使えます。 それぞれ「要素数」を返します。
2. 数値には使えない
n = 123
# len(n) # ❌ TypeError
Python数値は「長さ」という概念を持たないため、 len() を使うとエラーになります。
数値の桁数を知りたい場合は、 いったん文字列に変換してから len() を使います。
n = 12345
digits = len(str(n))
print(digits) # 5
Python3. None にも使えない
value = None
# len(value) # ❌ TypeError
PythonNone は「何もない」という特別な値であり、 長さという概念を持ちません。 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での文字列処理が一段と信頼できるものになります。
