Pythonで数値を文字列に変換する方法について書いています。
数値から文字列に変更するには、下記の方法を使います。
・__str__メソッド
・formatメソッド
・f(フォーマット済み文字列リテラル)
サンプルコードはPythonのバージョン3.9.12で動作を検証しています。
str関数を使って変換する
数値をstr関数に渡すことで、文字列に変換することができます。
例えば、下記のように使います。
number = 100
numberFloat = 123.12
result1 = str(number)
result2 = str(numberFloat)
print(type(result1)) # <class 'str'>
print(type(result2)) # <class 'str'>
print(result1) # 100
print(result2) # 123.12
最初にnumber変数に数値の「100」を代入しました。
その次にnumberFloat変数に浮動小数点数の「123.12」を代入しました。
それぞれstr関数に渡して、result1・result2変数で、変換した値を受け取っています。
print関数を使って、型を確認すると文字列になっていることが確認できました。
__str__メソッドを使って変換する
特殊な__str__メソッドを数値を入れた変数から呼び出すことが可能です。
例えば、下記のように使います。
number = 77
numberFloat = 3.14
result1 = number.__str__()
result2 = numberFloat.__str__()
print(type(result1)) # <class 'str'>
print(type(result2)) # <class 'str'>
print(result1) # 77
print(result2) # 3.14
最初にnumber変数に数値の「77」を代入しました。
その次にnumberFloat変数に浮動小数点数の「3.14」を代入しました。
それぞれ代入した変数から、__str__メソッドを呼び出しています。
このメソッドを呼ぶことで、文字列に変換して返してくれます。
(※変数から呼ぶことはできますが、数値から呼び出すことはできないので注意が必要です)
result1・result2変数で、それぞれの値を受け取りました。
どちらも文字列型になって、代入されている文字列(数値)が出力できることが確認できました。
formatメソッドを使って変換する
formatメソッドを文字列から呼び出して、数値を渡すことで文字列に変換することができます。
例えば、下記のように使います。
number = 1980
numberFloat = 19.80
result1 = "{0}".format(number)
result2 = "{0}".format(numberFloat)
print(type(result1)) # <class 'str'>
print(type(result2)) # <class 'str'>
print(result1) # 1980
print(result2) # 19.80
最初にnumber変数に数値の「1980」を代入しました。
その次にnumberFloat変数に浮動小数点数の「19.80」を代入しました。
その後に「"{0}".format()
」という感じで、formatメソッドを文字列から呼び出して使っています。
formatメソッドでは、{0}
の箇所に引数で渡した数値や文字列を当てはめて、返してくれます。
{0}
なので、引数の1つ目がここに当てはまります、{1}
なら引数で渡した2つ目の値が表示されます。(formatメソッドについては後述しています)
type関数を使って型を出力すると、それぞれ文字列型になっていることが確認できました。
文字列の中に引数の数値を埋め込む
formatメソッドを使うと、formatメソッドに渡した数値や文字列を、呼び出し元のフォーマット形式に埋め込むことができます。
上記のプログラムだと、ひとつの引数しか渡しませんでしたが、複数の引数を渡して文字列に展開できます。
price = 120
fruit = "りんご"
result = "{0}は{1}円です。".format(fruit, price)
print(result) # りんごは120円です。
price変数とfruit変数に「120」と「りんご」を代入しています。
result変数にformatメソッドを使用して、ふたつの変数の内容を展開しました。
{0}
の箇所にfruit変数、{1}
の箇所にprice変数が展開されます。
内容を確認すると「りんごは120円です。」が出力されたことが確認できました。
引数番号を書かないとき
引数の番号を書かない場合には、引数順に渡した変数や値が展開されます。
price = 110
result = "{}は{}で{}色です。".format("バナナ", price, "黄")
print(result) # バナナは110で黄色です。
上記のように引数番号を書かない場合は、渡した順に展開されます。
引数番号を書くことで、前後を入れ替えたりすることが可能です。
price = 110
result = "{2}は{0}で{1}色です。".format("バナナ", price, "黄")
print(result) # 黄はバナナで110色です。
f(フォーマット済み文字列リテラル)を使って変換する
フォーマット済み文字列リテラルを使うことでも、数値から文字列に変換可能です。
フォーマット済み文字列リテラルを使うと、formatメソッドと同じように文字列の中に変数や式を展開することができます。
こちらは、下記のように使います。
price = 120
fruit = "りんご"
result = f'{fruit}は{price}円で{"赤"}色です。'
print(result) # りんごは120円で赤色です。
price変数とfruit変数に「120」と「りんご」を代入しました。
result変数にfを使用して、変数の内容を展開しています。
fを書いて、シングルクォートで囲んだ文字列の中に、波括弧({}
)を使用して変数を展開しています。
波括弧に変数や式を書くと、内容が展開されます。
result変数に展開された内容を確認すると「りんごは120円で赤色です。」が出力されました。
コメント