在Python中读取包含列表理解的文本文件,并将某些值转换为浮点值
我有一个带有x、y和Id的文本文件在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()
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]
谢谢,一行有办法吗?为什么你想把它列为一个列表?