はじめに
この実験では、Python の文字列が数値を表すかどうかを判断する方法を学びます。まず、numeric_strings.py
という名前の Python スクリプトで、いくつかの数値に似た様々な文字列を定義します。このスクリプトは、これらの文字列をコンソールに出力し、その後の分析の準備を整えます。
次に、isdigit()
メソッドを使って、数字のみを含む文字列(つまり、非負の整数)を識別します。このメソッドは、データの検証や数値型への安全な変換を保証するために重要です。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、Python の文字列が数値を表すかどうかを判断する方法を学びます。まず、numeric_strings.py
という名前の Python スクリプトで、いくつかの数値に似た様々な文字列を定義します。このスクリプトは、これらの文字列をコンソールに出力し、その後の分析の準備を整えます。
次に、isdigit()
メソッドを使って、数字のみを含む文字列(つまり、非負の整数)を識別します。このメソッドは、データの検証や数値型への安全な変換を保証するために重要です。
このステップでは、Python が数値を表す文字列(「数値文字列」と呼ばれます)をどのように扱うかを探ります。数値文字列を識別し、操作する方法を理解することは、データの検証と操作において重要です。
数値文字列とは、数値として解釈できる文字のみを含む文字列のことです。これには整数、浮動小数点数、さらには科学表記法で表された数値も含まれます。
いくつかの例を調べるために、Python スクリプトを作成してみましょう。
VS Code エディタで、~/project
ディレクトリに numeric_strings.py
という名前の新しいファイルを作成します。
numeric_strings.py
ファイルに次のコードを追加します。
## Define some strings
string1 = "123"
string2 = "3.14"
string3 = "-42"
string4 = "0"
string5 = " 56 "
string6 = "abc"
string7 = "123.45.67"
string8 = "1e10"
## Print the strings
print(f"String 1: {string1}")
print(f"String 2: {string2}")
print(f"String 3: {string3}")
print(f"String 4: {string4}")
print(f"String 5: {string5}")
print(f"String 6: {string6}")
print(f"String 7: {string7}")
print(f"String 8: {string8}")
numeric_strings.py
ファイルを保存します。
次に、ターミナルからスクリプトを実行します。
python numeric_strings.py
次のような出力が表示されるはずです。
String 1: 123
String 2: 3.14
String 3: -42
String 4: 0
String 5: 56
String 6: abc
String 7: 123.45.67
String 8: 1e10
ご覧の通り、いくつかの文字列が定義されており、その中には数値のように見えるものもあります。次のステップでは、これらの文字列のうちどれが安全に数値型に変換できるかを判断する方法を学びます。
このステップでは、isdigit()
メソッドを使って、文字列が数字のみを含み、非負の整数を表すかどうかをチェックする方法を学びます。このメソッドは、ユーザー入力やファイルから読み取ったデータの検証に特に有用です。
isdigit()
メソッドは Python の組み込み文字列メソッドです。文字列内のすべての文字が数字で、かつ少なくとも 1 文字ある場合に True
を返し、それ以外の場合は False
を返します。
前のスクリプトを修正して isdigit()
を使ってみましょう。
VS Code エディタで numeric_strings.py
ファイルを開きます。
次のように isdigit()
メソッドを含むようにコードを修正します。
## Define some strings
string1 = "123"
string2 = "3.14"
string3 = "-42"
string4 = "0"
string5 = " 56 "
string6 = "abc"
string7 = "123.45.67"
string8 = "1e10"
## Check if the strings are digits
print(f"String 1 '{string1}' isdigit(): {string1.isdigit()}")
print(f"String 2 '{string2}' isdigit(): {string2.isdigit()}")
print(f"String 3 '{string3}' isdigit(): {string3.isdigit()}")
print(f"String 4 '{string4}' isdigit(): {string4.isdigit()}")
print(f"String 5 '{string5}' isdigit(): {string5.isdigit()}")
print(f"String 6 '{string6}' isdigit(): {string6.isdigit()}")
print(f"String 7 '{string7}' isdigit(): {string7.isdigit()}")
print(f"String 8 '{string8}' isdigit(): {string8.isdigit()}")
numeric_strings.py
ファイルを保存します。
ターミナルからスクリプトを実行します。
python numeric_strings.py
次のような出力が表示されるはずです。
String 1 '123' isdigit(): True
String 2 '3.14' isdigit(): False
String 3 '-42' isdigit(): False
String 4 '0' isdigit(): True
String 5 ' 56 ' isdigit(): False
String 6 'abc' isdigit(): False
String 7 '123.45.67' isdigit(): False
String 8 '1e10' isdigit(): False
ご覧の通り、isdigit()
は数字のみを含む文字列に対してのみ True
を返します。小数点、負符号、空白、または数字以外の文字を含む文字列に対しては False
を返します。
このメソッドは、文字列がエラーを引き起こすことなく安全に整数に変換できるかどうかを検証するのに役立ちます。ただし、isdigit()
は非負の整数にのみ有効であることを覚えておくことが重要です。他の数値型については、次のステップで見るように、別のアプローチを使う必要があります。
このステップでは、float()
関数を使って文字列を浮動小数点数に変換する方法を探ります。これは、小数点を持つ数値や科学表記法で表された数値を扱う必要がある場合に便利です。
float()
関数は Python の組み込み関数で、引数を浮動小数点数に変換しようとします。引数が文字列の場合、それは有効な浮動小数点数の表現でなければなりません。
再度スクリプトを修正して float()
を使い、さまざまな文字列をどのように扱うかを見てみましょう。
VS Code エディタで numeric_strings.py
ファイルを開きます。
float()
関数を含め、潜在的なエラーを処理するようにコードを修正します。
## Define some strings
string1 = "123"
string2 = "3.14"
string3 = "-42"
string4 = "0"
string5 = " 56 "
string6 = "abc"
string7 = "123.45.67"
string8 = "1e10"
## Try converting the strings to floats
strings = [string1, string2, string3, string4, string5, string6, string7, string8]
for s in strings:
try:
float_value = float(s)
print(f"String '{s}' can be converted to float: {float_value}")
except ValueError:
print(f"String '{s}' cannot be converted to float")
numeric_strings.py
ファイルを保存します。
ターミナルからスクリプトを実行します。
python numeric_strings.py
次のような出力が表示されるはずです。
String '123' can be converted to float: 123.0
String '3.14' can be converted to float: 3.14
String '-42' can be converted to float: -42.0
String '0' can be converted to float: 0.0
String ' 56 ' can be converted to float: 56.0
String 'abc' cannot be converted to float
String '123.45.67' cannot be converted to float
String '1e10' can be converted to float: 10000000000.0
ご覧の通り、float()
は整数、小数、科学表記法で表された数値を表す文字列を正常に変換できます。また、先頭と末尾の空白を自動的に削除します(string5
で示されています)。ただし、文字列が有効な浮動小数点数として解釈できない場合、ValueError
を発生させます(string6
と string7
で示されています)。
try-except
ブロックを使用することで、これらの潜在的なエラーを適切に処理し、プログラムがクラッシュするのを防ぐことができます。これは、ユーザー入力や外部ソースからのデータを扱う際の一般的で重要な手法です。
この実験では、まず Python で数値文字列を定義しました。数値文字列とは、数値(整数、浮動小数点数など)として解釈できる文字を含む文字列です。numeric_strings.py
スクリプトを作成し、整数、小数、非数値文字を含む文字列など、さまざまな文字列を定義して出力し、さまざまな文字列形式を示しました。
次に、isdigit()
メソッドを使って、文字列が数字のみを含み、非負の整数を表すかどうかをチェックする方法を探り始めました。この実験では、このメソッドを使って文字列を検証する方法を引き続き説明します。