Python:如何从文件中的行读取字符并将它们转换为浮点数和strs,具体取决于它们是数字还是字母?

msh*_*ssy 4 python input

我有一个看起来像这样的文件:

1 1 C C 1.9873 2.347 3.88776

1 2 C Si 4.887 9.009 1.21
Run Code Online (Sandbox Code Playgroud)

我想逐行阅读文件的内容.当我在我使用的线上只有数字时:

for line in readlines(file):
    data = map(float, line.split)
Run Code Online (Sandbox Code Playgroud)

但这只适用于line.split的所有元素都是数字的情况.我怎样才能将字母存储为字符串,将数字存储为浮点数?

Igo*_*bin 9

$ cat 1.py
def float_or_str(x):
  try:
     return float(x)
  except ValueError:
     return x

line = '1 1 C C 1.9873 2.347 3.88776'
print map(float_or_str, line.split())

$python 1.py
[1.0, 1.0, 'C', 'C', 1.9873, 2.347, 3.88776]
Run Code Online (Sandbox Code Playgroud)

  • 不要使用裸露的.这是非常糟糕的风格. (2认同)