def read_data(filename):
answer = []
in_file = open(filename)
lines = in_file.readlines()
lines = [line.strip() for line in lines]
for line in lines:
answer.append(line.split(","))
return answer
ANSWER --> [['Angus McGurkinshaw', '25'], ['Thomas Albert Finkelstein III', '75'], ['Myrtle', '50']]
我无法弄清楚如何将列表中每个对象的数量更改为浮点数,任何人都可以指向正确的方向。
谢谢!
答案 0 :(得分:2)
将您的代码更改为
for line in lines:
name,val = line.split(",")
answer.append([name,float(val)])
如果你确定你得到了2个元素,那么第2个元素可以浮动转换。
如果要修改结果列表:您可以创建一个tryFloat(string)
方法,该方法需要string
,如果它可以浮动则返回float
,否则返回字符串:
def tryFloat(t:str):
"""Tries to convert t to float and returns it, returns t if not a float."""
try:
f = float(t)
return f
except (ValueError,EOFError):
return t
data = [['Angus McGurkinshaw', '25'], ['Thomas Albert Finkelstein III', '75'], ['Myrtle', '50']]
data2 = [ [tryFloat(f) for f in y] for y in data]
print(data2)
并将其应用于您的列表列表。如果您确定第二件事是浮点数,请使用其他建议的方法之一。只要您只有字符串列表列表,tryFloat()就可以在arbritary位置使用浮点数。
输出:
[['Angus McGurkinshaw', 25.0], ['Thomas Albert Finkelstein III', 75.0], ['Myrtle', 50.0]]
答案 1 :(得分:1)
row = line.split(",")
row[1] = float(row[1])
answer.append(row)
答案 2 :(得分:1)
迭代您的answer
列表。对于每个条目,调用float()
构造函数。
for line in answer:
line[1] = float(line[1])