Считывание поплавков и строк из файла в список кортежей с сохраненными типами данных

#python #string #list #floating-point #tuples

Вопрос:

Допустим, у меня есть файл example.txt , и он выглядит так:

 12.592,92.219,Cat 42.643765,72.268234,Dog 12.24312121,22.24312121,Parrot 54.12311,91.32811,Monkey ...  

Как я могу сопоставить как первые два значения с плавающей точкой, так и строку со списком кортежей? Смотреть ниже:

 [('12.592','92.219','Cat'), ('42.643765','72.268234','Dog'), ('12.24312121','22.24312121','Parrot'), ('54.12311','91.32811','Monkey')]  

Прежде чем я ввел строковые значения example.txt , я смог успешно прочитать плавающие точки в файле в список кортежей, используя следующий метод:

 with open('data/example.txt') as f:  dataset = [tuple(map(float, i.split(','))) for i in f]  

Выход: [('12.592','92.219'), ('42.643765','72.268234'), ('12.24312121','22.24312121'), ('54.12311','91.32811')]

Ответ №1:

Воспользуйся:

 with open('data/example.txt') as f:  # split each line by ","  rows = [i.strip().split(",") for i in f]    # transform only the first two chunks (numbers) and leave the last one as a string  dataset = [(*map(float, numbers), string) for *numbers, string in rows]  print(dataset)  

Выход

 [(12.592, 92.219, 'Cat'), (42.643765, 72.268234, 'Dog'), (12.24312121, 22.24312121, 'Parrot'), (54.12311, 91.32811, 'Monkey')]