【Python】文字列をint型(整数型)に型変換する方法

この記事では、初心者の方でもわかりやすいように、int()関数の基本的な使い方から、エラーが発生した場合の対処法までを詳しく解説します。

さらに、実際のプログラムで役立つ具体的な例や、リスト内包表記やmap()関数を使った応用的な使い方も紹介します。

目次から探す

文字列をint型に変換する方法

Pythonでは、文字列を整数型(int型)に変換するためにint()関数を使用します。

このセクションでは、int()関数の基本的な使い方から、変換できない文字列の扱いまでを詳しく解説します。

int()関数の使い方

int()関数の基本的な使い方

int()関数は、文字列や他の数値型を整数型に変換するための組み込み関数です。

基本的な使い方は以下の通りです。

# 文字列を整数に変換する
num_str = "123"
num_int = int(num_str)
print(num_int)  # 出力: 123

この例では、文字列 123 を整数 123 に変換しています。

例: 文字列から整数への変換

具体的な例をいくつか見てみましょう。

# 文字列を整数に変換する例
num_str1 = "456"
num_int1 = int(num_str1)
print(num_int1)  # 出力: 456
num_str2 = "789"
num_int2 = int(num_str2)
print(num_int2)  # 出力: 789

このように、int()関数を使うことで簡単に文字列を整数に変換することができます。

変換できない文字列の扱い

数字以外の文字列を変換しようとした場合

int()関数は、数字以外の文字列を変換しようとするとエラーを発生させます。

例えば、以下のような場合です。

# 数字以外の文字列を変換しようとする例
invalid_str = "abc"
num_int = int(invalid_str)  # ここでエラーが発生する

このコードを実行すると、ValueErrorが発生します。

ValueErrorの説明と対処法

ValueErrorは、無効な値が関数に渡されたときに発生するエラーです。

int()関数に数字以外の文字列を渡すと、このエラーが発生します。

エラーを防ぐためには、文字列が数字であることを確認する必要があります。

以下はその一例です。

# 文字列が数字かどうかを確認する例
num_str = "123abc"
if num_str.isdigit():
    num_int = int(num_str)
    print(num_int)
else:
    print("変換できない文字列です。")

このコードでは、isdigit()メソッドを使って文字列が数字であるかどうかを確認しています。

数字でない場合は、エラーメッセージを表示します。

以上が、文字列をint型に変換する方法と、変換できない文字列の扱いです。

次のセクションでは、実践的な例を通じてさらに理解を深めていきましょう。

実践的な例

ここでは、実際に文字列をint型に変換する具体的な例を見ていきます。

ユーザーからの入力やファイルから読み込んだデータを整数に変換する方法を学びましょう。

ユーザー入力の処理

ユーザーからの入力を整数として扱う場合、input()関数int()関数を組み合わせて使用します。

input()関数とint()関数の組み合わせ

input()関数はユーザーからの入力を文字列として受け取ります。

そのため、数値を入力しても文字列として扱われます。

これを整数として扱うためには、int()関数を使って型変換を行います。

# ユーザーからの入力を受け取る
user_input = input("数字を入力してください: ")
# 文字列を整数に変換する
try:
    user_number = int(user_input)
    print(f"入力された数字は {user_number} です。")
except ValueError:
    print("入力された値は数字ではありません。")

例: ユーザーからの入力を整数として扱う

上記のコードを実行すると、ユーザーが入力した値が整数に変換されます。

もし、入力が数字でない場合はValueErrorが発生し、エラーメッセージが表示されます。

数字を入力してください: 42
入力された数字は 42 です。
数字を入力してください: abc
入力された値は数字ではありません。

ファイルから読み込んだデータの変換

次に、ファイルから読み込んだデータを整数に変換する方法を見ていきます。

ファイル操作の基本

Pythonでは、ファイル操作を行うためにopen()関数を使用します。

ファイルを開いた後、read()readlines()などのメソッドを使ってデータを読み込みます。

ファイル操作が終わったら、close()メソッドでファイルを閉じることが重要です。

# ファイルを開く
with open('data.txt', 'r') as file:
    # ファイルからデータを読み込む
    data = file.read()
print(data)

例: ファイルから読み込んだ文字列を整数に変換する

以下の例では、ファイルから読み込んだ文字列を整数に変換します。

ファイルには数値が文字列として保存されていると仮定します。

# ファイルを開く
with open('numbers.txt', 'r') as file:
    # ファイルからデータを読み込む
    data = file.readlines()
# 各行を整数に変換する
numbers = []
for line in data:
    try:
        number = int(line.strip())
        numbers.append(number)
    except ValueError:
        print(f"無効なデータが含まれています: {line.strip()}")
print("変換された整数リスト:", numbers)

このコードを実行すると、ファイルに含まれる各行の文字列が整数に変換され、リストに格納されます。

無効なデータが含まれている場合は、エラーメッセージが表示されます。

無効なデータが含まれています: abc
変換された整数リスト: [10, 20, 30]

このように、ユーザー入力やファイルからのデータを整数に変換する方法を学ぶことで、より実践的なPythonプログラミングが可能になります。

応用的な使い方

リスト内包表記を使った変換

リスト内包表記の基本

リスト内包表記は、リストを簡潔に生成するためのPythonの強力な機能です。

通常のforループを使ってリストを生成するのに比べて、コードが短く、読みやすくなります。

基本的な構文は以下の通りです。

[式 for 要素 in イテラブル]

例えば、0から9までの整数を含むリストを生成する場合、以下のように書くことができます。

numbers = [i for i in range(10)]
print(numbers)  # 出力: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

例: 文字列のリストを整数のリストに変換する

文字列のリストを整数のリストに変換する場合も、リスト内包表記を使うと非常に簡単です。

以下に具体的な例を示します。

# 文字列のリスト
str_list = ["1", "2", "3", "4", "5"]
# リスト内包表記を使って文字列を整数に変換
int_list = [int(x) for x in str_list]
print(int_list)  # 出力: [1, 2, 3, 4, 5]

この例では、str_listという文字列のリストをint_listという整数のリストに変換しています。

リスト内包表記を使うことで、コードが非常にシンプルで読みやすくなります。

map()関数を使った変換

map()関数の基本

map()関数は、指定した関数をイテラブル(リストやタプルなど)の各要素に適用し、新しいイテラブルを生成するための関数です。

基本的な構文は以下の通りです。

map(関数, イテラブル)

例えば、リストの各要素に対して2倍する関数を適用する場合、以下のように書くことができます。

def double(x):
    return x * 2
numbers = [1, 2, 3, 4, 5]
doubled_numbers = list(map(double, numbers))
print(doubled_numbers)  # 出力: [2, 4, 6, 8, 10]

例: 文字列のリストをmap()関数で整数に変換する

文字列のリストを整数のリストに変換する場合も、map()関数を使うと非常に簡単です。

以下に具体的な例を示します。

# 文字列のリスト
str_list = ["1", "2", "3", "4", "5"]
# map()関数を使って文字列を整数に変換
int_list = list(map(int, str_list))
print(int_list)  # 出力: [1, 2, 3, 4, 5]

この例では、str_listという文字列のリストをint_listという整数のリストに変換しています。

map()関数を使うことで、コードが非常にシンプルで読みやすくなります。

リスト内包表記とmap()関数のどちらを使うかは、好みや状況によりますが、どちらも非常に便利な方法ですので、ぜひ活用してみてください。

エラーハンドリング

Pythonで文字列を整数に変換する際、すべての文字列が正しく変換できるわけではありません。

例えば、数字以外の文字が含まれている場合や、空の文字列を変換しようとするとエラーが発生します。

これらのエラーを適切に処理するために、エラーハンドリングの方法を学びましょう。

try-except文の使い方

try-except文の基本

Pythonでは、エラーが発生する可能性のあるコードをtryブロックに書き、そのエラーをexceptブロックでキャッチして処理することができます。

これにより、プログラムがクラッシュするのを防ぎ、エラーが発生した際に適切な対応を行うことができます。

基本的な構文は以下の通りです。

try:
    # エラーが発生する可能性のあるコード
except エラーの種類:
    # エラーが発生した場合の処理

例: 文字列を整数に変換する際のエラーハンドリング

具体的な例として、ユーザーから入力された文字列を整数に変換する際のエラーハンドリングを見てみましょう。

user_input = input("数字を入力してください: ")
try:
    number = int(user_input)
    print(f"入力された数字は {number} です。")
except ValueError:
    print("入力された値は数字ではありません。")

この例では、ユーザーが入力した文字列をint()関数で整数に変換しようとしています。

しかし、入力が数字でない場合、ValueErrorが発生します。

このエラーをexceptブロックでキャッチし、適切なメッセージを表示しています。

複数の例外を処理する

複数の例外のキャッチ方法

場合によっては、複数の異なる種類のエラーが発生する可能性があります。

Pythonでは、exceptブロックを複数用意することで、異なる種類のエラーを個別に処理することができます。

基本的な構文は以下の通りです。

try:
    # エラーが発生する可能性のあるコード
except エラーの種類1:
    # エラーの種類1が発生した場合の処理
except エラーの種類2:
    # エラーの種類2が発生した場合の処理

例: ValueErrorとTypeErrorの処理

具体的な例として、ValueErrorTypeErrorの両方を処理する方法を見てみましょう。

def convert_to_int(value):
    try:
        return int(value)
    except ValueError:
        print("ValueError: 入力された値は数字ではありません。")
    except TypeError:
        print("TypeError: 入力された値の型が不正です。")
# テストケース
print(convert_to_int("123"))  # 正常なケース
print(convert_to_int("abc"))  # ValueErrorが発生するケース
print(convert_to_int(None))   # TypeErrorが発生するケース

この例では、convert_to_int関数が文字列を整数に変換しようとしています。

入力が数字でない場合はValueErrorが発生し、入力がNoneなどの不正な型の場合はTypeErrorが発生します。

それぞれのエラーを個別にキャッチして、適切なメッセージを表示しています。

以上のように、エラーハンドリングを適切に行うことで、プログラムの信頼性とユーザーエクスペリエンスを向上させることができます。

目次から探す