for line in infile:
data = [x if x.isalpha() else float(x) for x in line.split()]
データにアルファベットでも有効な浮動小数点数でもないフィールドが含まれている場合 (たとえば、「A1」)、問題が発生します。あなたのデータには、あなたが言ったことからこれらがないように見えますが、もしそうなら、try/exceptIgor によって提案されたアプローチがおそらくより適しているでしょう。
ただし、試行する型を指定できる、より一般的な関数を使用する可能性があります。
def tryconvert(value, *types):
for t in types:
try:
return t(value)
except (ValueError, TypeError):
continue
return value
for line in infile:
data = [tryconvert(x, int, float) for x in line.split()]
これは、整数に変換されるものを に変換し、intを試行することに失敗しfloat、最後にあきらめて元の値を返します。これは文字列になることがわかっています。(文字列であることがわからない場合は、strへの呼び出しの最後に貼り付けることができtryconvert()ます。)