使用列表推导在Python中读取文本文件并将某些值转换为浮点数
我有一个文本文件,里面有x、y和Id这些数据。
text = "c:\\text.txt"
480031, 6171223, 77-1084-A,
478578, 6170168, 77-0767-A,
479429, 6171688, 77-1065-A,
479526, 6190464, 79-1420-A,
480469, 6183769, 78-2071-A,
......, ......., .........,
我用一种叫做列表推导的方法把这个文件读成一个列表。
centres = [l.split() for l in open(text, "r")]
[['480031', '6171223', '77-1084-A'],
['478578', '6170168', '77-0767-A'],
['479429', '6171688', '77-1065-A'],
['479526', '6190464', '79-1420-A'],
........., ........., ...........]]
我希望在使用列表推导的时候,如果能把x和y转换成浮点数,那就太好了,这样我就能得到。
[[480031, 6171223, '77-1084-A'],
[478578, 6170168, '77-0767-A'],
[479429, 6171688, '77-1065-A'],
[479526, 6190464, '79-1420-A'],
........., ........., ...........]]
3 个回答
0
把代码写成一行虽然看起来很酷,但如果把它分开写,读起来会更清楚(更容易理解和维护):
INPUT = "c:/text.txt"
def convert(line):
row = line.split()
return (int(row[0]), int(row[1]), row[2])
with open(INPUT) as inf:
centres = [convert(line) for line in inf]
1
这不是一步到位,但你可以这样做:
centres = [l.split() for l in open(text, "r")]
centres = [[int(x), int(y), z] for x, y, z in centres]
1
这是一个一行的示例:
centres = [[int(l[0]), int(l[1]), l[2].strip()] for l in [l.split(',') for l in open(text, "r")]]