
【Python】int(数値)とstring(文字列)を変換する方法
公開: 更新:Pythonで文字列を数値(int・整数型)に変換する方法
Pythonで文字列を数値に変換する場合、主にint()
関数を使用します。文字列に含まれる文字が有効な整数表現(半角数字や符号など)であれば、そのまま整数型に変換できます。ただし、無効な文字(数字以外のアルファベットや空文字など)が含まれていると、ValueError
が発生する点に注意が必要です。
# 【サンプルコード】
# 文字列から整数への変換
text_number = "123"
number = int(text_number)
print(f"変換前の型: {type(text_number)}, 値: {text_number}")
print(f"変換後の型: {type(number)}, 値: {number}")
# 進数を指定して変換 (例: 2進数)
binary_str = "1010"
number_binary = int(binary_str, 2)
print(f"2進数 '{binary_str}' を整数に変換: {number_binary}")
# 【実行結果】
変換前の型: , 値: 123
変換後の型: , 値: 123
2進数 '1010' を整数に変換: 10
行番号 | 詳細説明 |
---|---|
2行目 | text_numberに"123"という文字列を代入 |
3行目 | int関数で文字列を整数に変換してnumberに代入 |
4行目 | 変換前の型と値をprint関数で出力 |
5行目 | 変換後の型と値をprint関数で出力 |
7行目 | 2進数を表す文字列"1010"をbinary_strに代入 |
8行目 | int関数の第二引数に2を指定し2進数を整数として解釈 |
9行目 | 2進数から変換した結果をprint関数で出力 |
基数の指定にはint(文字列, 基数)
を使用します。2進数や16進数など、さまざまな進数表現の文字列を簡単に整数へ変換できます。ただし、変換できない形式の文字列を渡すとValueError
が発生するため、入力データの検証を行うかtry-except
構文によるエラー処理を取り入れることが望ましいです。
【PR】プログラミングや生成AIを無料で学べる「コードキャンプフリー」
Pythonで数値を文字列(string型)に変換する方法
Pythonで数値を文字列に変換する場合、str()
関数を使用するのが基本です。整数だけではなくその他のオブジェクトでも、str()
関数で文字列表現を得られます。以下では整数から文字列への変換例を示します。
# 【サンプルコード】
# 整数から文字列へ
num = 456
text_num = str(num)
print(f"変換前: {num}, 型: {type(num)}")
print(f"変換後: {text_num}, 型: {type(text_num)}")
# 16進数などへの変換
hex_val = hex(num)
print(f"16進数表現: {hex_val}")
# 【実行結果】
変換前: 456, 型:
変換後: 456, 型:
16進数表現: 0x1c8
行番号 | 詳細説明 |
---|---|
2行目 | numに整数456を代入 |
3行目 | str関数で整数を文字列に変換しtext_numに代入 |
4行目 | 変換前の値と型をprint関数で出力 |
5行目 | 変換後の値と型をprint関数で出力 |
7行目 | hex関数で整数を16進数表現の文字列に変換し結果を出力 |
整数以外にもbin()
やoct()
、hex()
を使うと特定の進数表記で文字列を得ることができます。さらにフォーマット文字列(f
文字列)やformat()
メソッドを使えば、カンマ区切りなど多様な形式で文字列に変換できます。
数値変換におけるエラー処理と型変換の注意点
文字列から数値への変換では、無効な文字列を渡した場合にValueError
が発生し、プログラムが停止してしまいます。ユーザー入力やファイル読込みなど外部データを取り扱う際は、try-except
構文でエラーを捕捉したり、事前に文字列の検証を行うことが重要です。
また、浮動小数点数や複数の型変換が絡むと誤差や意図しない変換が起こることがあるため、decimal
モジュールのDecimal
クラスなども検討します。以下はエラー処理と型検証の例です。
# 【サンプルコード】
def safe_convert_to_int(value):
try:
return int(value)
except ValueError:
print(f"エラー: '{value}'は整数に変換できません")
return None
test_values = ["123", "45.67", "abc", "", "99x"]
for val in test_values:
result = safe_convert_to_int(val)
if result is not None:
print(f"'{val}' → {result}")
else:
print(f"'{val}'の変換に失敗")
def validate_and_convert(value):
if value.isdigit():
return int(value)
elif value.startswith('-') and value[1:].isdigit():
return int(value)
else:
return None
print("\n入力検証の結果:")
for v in ["-42", "abc", "123", "0"]:
print(f"'{v}' → {validate_and_convert(v)}")
# 【実行結果】
'123' → 123
エラー: '45.67'は整数に変換できません
'45.67'の変換に失敗
エラー: 'abc'は整数に変換できません
'abc'の変換に失敗
エラー: ''は整数に変換できません
''の変換に失敗
エラー: '99x'は整数に変換できません
'99x'の変換に失敗
入力検証の結果:
'-42' → -42
'abc' → None
'123' → 123
'0' → 0
行番号 | 詳細説明 |
---|---|
1行目 | 文字列を安全に整数へ変換する関数safe_convert_to_intを定義 |
2行目 | tryブロックでint関数を実行 |
3行目 | ValueErrorが発生しなければその結果を返す |
4行目 | ValueError例外を捕捉しメッセージを表示後Noneを返す |
7行目 | テスト用リストtest_valuesを定義 |
9行目 | safe_convert_to_intで変換を試行し結果を受け取る |
13行目 | validate_and_convert関数を定義し事前検証を行う |
14行目 | value.isdigit()で数字のみか確認し真ならintに変換 |
15行目 | 先頭が-で残りが数字だけか確認し真ならintに変換 |
16行目 | どちらでもない場合はNoneを返す |
21行目 | validate_and_convertを複数の文字列に適用し結果を出力 |
さらに、複雑な型変換が必要となる実例として、CSVデータなどから文字列を取得して動的にint
やfloat
に変換するケースが挙げられます。
# 【サンプルコード】
csv_data = "名前,年齢,身長\n田中太郎,28,175.5\n佐藤花子,24,162.3"
def process_csv_data(csv_string):
lines = csv_string.strip().split('\n')
headers = lines[0].split(',')
result = []
for i in range(1, len(lines)):
values = lines[i].split(',')
person = {}
for j in range(len(headers)):
value = values[j]
if value.isdigit():
person[headers[j]] = int(value)
else:
try:
person[headers[j]] = float(value)
except ValueError:
person[headers[j]] = value
result.append(person)
return result
people = process_csv_data(csv_data)
print("処理済みデータ:")
for person in people:
print(person)
# 【実行結果】
処理済みデータ:
{'名前': '田中太郎', '年齢': 28, '身長': 175.5}
{'名前': '佐藤花子', '年齢': 24, '身長': 162.3}
行番号 | 詳細説明 |
---|---|
1行目 | CSV形式の文字列をcsv_dataに定義 |
3行目 | process_csv_data関数を定義 |
4行目 | 改行で分割して行単位のリストを得る |
5行目 | 最初の行をsplitで分割しヘッダ情報を取得 |
9行目 | 2行目以降を各行ごとにさらにsplitで分割 |
10行目 | personという辞書を用意 |
12行目 | valueが数字のみならintに変換 |
14行目 | floatに変換できる場合はfloatに変換 |
16行目 | それでも変換できなければ文字列のまま保持 |
18行目 | 加工した情報をリストに追加し最後にreturn |
22行目 | process_csv_dataの結果をpeopleに格納し内容を出力 |
このように事前に文字列の内容を検証することで、意図した通りの型へ安全に変換できます。誤った入力や空文字の場合はエラーを起こす前に分岐処理できるため、大規模なシステムでも安心です。
【PR】『Python』を学べる企業・個人向けのプログラミングコース
Pythonのintやstringに関するQ&A
Pythonでデータ型を確認する方法を教えてください
代表的なのはtype()
関数で、任意の変数や値を引数にすると、そのオブジェクトの型を返します。例えばtype(123)
は
、type("abc")
は
となります。
# 【サンプルコード】
# さまざまな型を用意
val_int = 10
val_str = "Hello"
val_float = 3.14
val_list = [1, 2, 3]
# type関数でそれぞれの型を確認
print(type(val_int)) #
print(type(val_str)) #
print(type(val_float)) #
print(type(val_list)) #
# 【実行結果】
行番号 | 詳細説明 |
---|---|
1行目 | サンプルコードで使用する変数val_intなどを定義 |
2行目 | val_intに整数10を代入 |
3行目 | val_strに文字列"Hello"を代入 |
4行目 | val_floatに浮動小数点数3.14を代入 |
5行目 | val_listにリスト[1, 2, 3]を代入 |
8行目 | type関数を使い各変数の型をprint関数で出力 |
数字をintではなくfloatに変換する方法を教えてください
文字列を浮動小数点数に変換する場合はfloat()
関数を使用します。int("3.14")
のように小数点を含む文字列をint()
へ渡すとValueError
になりますが、float("3.14")
なら3.14
という浮動小数点数に変換できます。
# 【サンプルコード】
# 文字列の数値をfloatに変換
num_str = "3.14"
float_num = float(num_str)
print(f"変換前: {num_str}, 型: {type(num_str)}")
print(f"変換後: {float_num}, 型: {type(float_num)}")
# int関数を使った場合の比較例
try:
int_num = int(num_str) # ここではエラーが発生
except ValueError:
print(f"int関数に'{num_str}'を渡すとValueErrorが発生")
# 【実行結果】
変換前: 3.14, 型:
変換後: 3.14, 型:
int関数に'3.14'を渡すとValueErrorが発生
行番号 | 詳細説明 |
---|---|
1行目 | num_strに文字列"3.14"を代入 |
2行目 | float関数でnum_strを浮動小数点数に変換しfloat_numに代入 |
3行目 | 変換前の値と型をprint関数で出力 |
4行目 | 変換後の値と型をprint関数で出力 |
7行目 | int関数に"3.14"を渡してエラーが発生する様子をtry-exceptで示す |
9行目 | int関数に"3.14"を渡すとValueErrorが発生するためメッセージを出力 |
キャストとは何ですか?
プログラミングにおけるキャストは、あるデータ型の値を別のデータ型に変換する行為を指します。Pythonではint()
やfloat()
、str()
などの関数を使うことでキャストを実現します。
# 【サンプルコード】
# 整数を文字列にキャスト
val_int = 100
val_str = str(val_int)
print(f"整数から文字列に変換: {val_str}, 型: {type(val_str)}")
# 文字列を整数にキャスト
text_num = "256"
num_int = int(text_num)
print(f"文字列から整数に変換: {num_int}, 型: {type(num_int)}")
# 文字列を浮動小数点数にキャスト
text_float = "7.89"
num_float = float(text_float)
print(f"文字列からfloatに変換: {num_float}, 型: {type(num_float)}")
# 【実行結果】
整数から文字列に変換: 100, 型:
文字列から整数に変換: 256, 型:
文字列からfloatに変換: 7.89, 型:
行番号 | 詳細説明 |
---|---|
1行目 | val_intに整数100を代入 |
2行目 | str関数で整数を文字列に変換しval_strに代入 |
4行目 | キャスト後の値と型をprint関数で出力 |
7行目 | 文字列"256"をint関数で整数に変換 |
9行目 | 文字列"256"を整数に変換した結果と型をprint関数で出力 |
12行目 | 文字列"7.89"をfloat関数で浮動小数点数に変換 |
14行目 | 浮動小数点数に変換した結果と型をprint関数で出力 |
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
- 【Python】仮想環境から抜ける方法
- 【Python】文字列から改行コードを除去する方法
- 【Python】10回の繰り返し処理を実装する方法
- 【Python】df(DataFrame)とは?基本的な使い方やデータ操作について解説
- 【Python】指定のファイルがあれば削除する方法
ITやプログラミングに関するニュース
- Azure SQL Managed InstanceがVector型Public Preview対応開始、AI駆動アプリケーション開発の効率化を実現
- GoogleがGmailアプリにGeminiサマリーカードを導入、メール要約の自動表示機能が利用可能に
- ZenchordとNottaが共同開発したAIイヤホンZenchord 1をMakuakeで先行公開、音声認識から議事録作成まで自動化
- Ideinが音声解析AIサービス「Phonoscape」の提供を開始、対面接客現場での会話データ活用が可能に
- Microsoftが.NET 10 Preview 4でdotnet run app.cs機能をリリース、プロジェクトファイル不要でC#実行が可能に