Чтение в Python текстового файла со списком и скрытие некоторых значений в плавающем
У меня есть текстовый файл с х, у и 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 в float, когда я использую понимание списка, чтобы иметь
[[480031, 6171223, '77-1084-A'],
[478578, 6170168, '77-0767-A'],
[479429, 6171688, '77-1065-A'],
[479526, 6190464, '79-1420-A'],
........., ........., ...........]]
3 ответа
Не совсем один шаг, но вы можете сделать:
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]