Python|文字列の長さ(文字数)を取得する

1. はじめに

Pythonで文字列を扱う際に、「文字列の長さ(文字数)を取得する」ことは非常によくあります。文字数をカウントすることで、ユーザー入力のバリデーションやログの整形、データ処理など、さまざまな場面で活用できます。

本記事では、Pythonで文字列の長さを取得する方法について、初心者にもわかりやすく解説します。len()関数の基本から応用的な使い方、よくあるエラーや注意点まで丁寧に紹介しますので、Python独学中の方はぜひ参考にしてください。

 

2. Pythonで文字列の長さ(文字数)を取得する基本

2-1. len()関数の使い方

Pythonでは、len()関数を使って簡単に文字列の長さを取得できます。

text = "Hello, Python!"
length = len(text)
print("文字列の長さは:", length)

実行結果:

文字列の長さは: 14

上記のように、len()関数に文字列を渡すだけで、その文字数(バイト数ではなく文字数)を取得できます。

2-2. 空文字列の長さを調べる

空の文字列("")の場合も、正しく0が返されます。

empty_text = ""
print("空文字列の長さ:", len(empty_text))

実行結果:

空文字列の長さ: 0

 

3. よくある使い方・応用例

3-1. 入力文字数の制限チェック

ユーザーがフォームやCLIで入力した文字列が、指定した文字数を超えていないかをチェックする場面は多いです。

user_input = input("名前を入力してください(10文字以内): ")

if len(user_input) > 10:
    print("エラー:10文字以内で入力してください。")
else:
    print("入力ありがとうございます!")

実行結果(例):

名前を入力してください(10文字以内): Python太郎
入力ありがとうございます!

3-2. マルチバイト文字(日本語)の文字数

日本語などのマルチバイト文字列でも、len()は正しく「文字数」を返してくれます。

jp_text = "こんにちは"
print("日本語文字列の長さ:", len(jp_text))

実行結果:

日本語文字列の長さ: 5

このように、内部的にはUnicodeとして扱われているため、見た目の文字数と一致します。

3-3. リストやタプルの長さ取得との違い

len()関数は文字列以外にもリストや辞書などにも使えますが、「要素の数」を返すという点で共通しています。

sample_list = ["apple", "banana", "cherry"]
print("リストの要素数:", len(sample_list))

実行結果:

リストの要素数: 3

このように、len()は汎用的に使える便利な関数です。

 

4. 注意点・エラー対策

4-1. 半角スペースや記号もカウントされる

len()は「見た目」ではなく「データとしての文字数」をカウントするため、半角スペースや改行、記号も1文字として扱われます。

text = "Hello World!"
print("文字列の長さ:", len(text))  # スペースも含めてカウントされる

実行結果:

文字列の長さ: 12

4-2. None型や数値には使えない

len()関数は文字列やコレクション型に対して使うことが前提です。数値型やNone型に対して使用するとエラーになります。

value = 123
print(len(value))  # これはTypeErrorになる

実行結果:

TypeError: object of type 'int' has no len()

このような場合には、str()で文字列に変換してから長さを調べる必要があります。

value = 123
print("数字を文字列に変換した長さ:", len(str(value)))

実行結果:

数字を文字列に変換した長さ: 3

 

5. まとめ

本記事では、Pythonで文字列の長さ(文字数)を取得する方法について解説しました。ポイントをまとめると以下の通りです。

  • len()関数を使えば、簡単に文字列の長さを取得できる
  • 日本語やスペース、記号なども正しくカウントされる
  • 数値型などには直接使えないので、文字列に変換が必要

実務では、ユーザー入力のバリデーションやデータの整形などに頻繁に使われます。 文字列操作に慣れることはPython習得の第一歩でもあるので、ぜひ実際にコードを書きながら練習してみてください。

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