在Python中读取包含列表理解的文本文件,并将某些值转换为浮点值

在Python中读取包含列表理解的文本文件,并将某些值转换为浮点值,python,coding-style,list-comprehension,floating,Python,Coding Style,List Comprehension,Floating,我有一个带有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()

我有一个带有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'],
........., ........., ...........]]

不完全是一步,但您可以做到:

centres = [l.split() for l in open(text, "r")]
centres = [[int(x), int(y), z] for x, y, z in centres]

这是一个单线示例:

centres = [[int(l[0]), int(l[1]), l[2].strip()] for l in [l.split(',') for l in open(text, "r")]]

这很酷,所有的一切,在一条线上做;但是,将其展开一点,可读性(可理解、可维护性)要高得多:

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]

谢谢,一行有办法吗?为什么你想把它列为一个列表?