我有一个名为“sample.txt”的文件,其中包含以下内容:
1 city1 85 100 0.05
2 city2 80 100 0.05
3 city3 34 100 0.32
我想返回一个表示文件中行的元组列表。
除了名称int
之外,这些项目应为string
类型
和权重float
所以结果会是这样的:
[(1, 'city1', 85, 100, 0.05), (2, 'city2', 80, 100, 0.05), (3, 'city3', 34, 100, 0.32)]
这是我到目前为止的代码:
def reader(filename):
with open(filename) as f:
arr = [tuple(line.split()) for line in f]
return arr
print(reader("sample.txt"))
结果如下:
[('1', 'city1', '85', '100', '0.05'), ('2', 'city2', '80', '100', '0.05'), ('3', 'city3', '34', '100', '0.32')]
正如您所看到的所有项目都是strings
但我希望将数字设为int
,将浮动数字设为float
,就像上面显示的那样但是我卡住了我不知道该怎么做。
你能帮我吗?
高级的谢谢。 问候
答案 0 :(得分:1)
您可以使用相应的类型进行压缩,并使用它来转换字符串。
def reader(filename):
types = [int, str, int, int, float]
with open(filename) as f:
return [tuple(t(x) for t, x in zip(types, line.split())) for line in f]
答案 1 :(得分:0)
def convert(x):
try:
a = float(x)
b = int(a)
return b if a == b else a
except:
return x
def reader(filename):
lines = []
with open(filename) as f:
for l in f:
lines.append(tuple(map(convert, l.split())))
return lines