我有一个看起来像这样的文件:
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的所有元素都是数字的情况.我怎样才能将字母存储为字符串,将数字存储为浮点数?
$ 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)