Чтение в 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]
Другие вопросы по тегам