文字列のリストを整数または浮動小数点数に変換するPythonコードがあります。整数の場合は非常に簡単です。
if element.isdigit():
newelement = int(element)
浮動小数点数はより困難です。現在、私は を使用してpartition('.')
文字列を分割し、片側または両側が数字であることを確認しています。
partition = element.partition('.')
if (partition[0].isdigit() and partition[1] == '.' and partition[2].isdigit())
or (partition[0] == '' and partition[1] == '.' and partition[2].isdigit())
or (partition[0].isdigit() and partition[1] == '.' and partition[2] == ''):
newelement = float(element)
これはうまくいきますが、明らかにそのためのif文は少々面倒です。私が考えた他の解決策は、変換をtry/catchブロックで囲み、それが成功するかどうかを確認することです。この質問。
他に何かアイデアはありますか? パーティションと try/catch アプローチの相対的なメリットについての意見はありますか?
ベストアンサー1
私はただ使います。
try:
float(element)
except ValueError:
print("Not a float")
..これはシンプルで、動作します。要素が 1<<1024 などの場合は、OverflowError がスローされることに注意してください。
もう一つの選択肢は正規表現です:
import re
if re.match(r'^-?\d+(?:\.\d+)$', element) is None:
print("Not float")