Если ваши строки всегда выглядят так, поэтому начинайте с "ranges: "
, за которым следует список значений, и единственное, что вы хотите удалить, это inf
, вы можете легко превратить его в список с плавающей точкой, используяmap
функция выглядит следующим образом:
line = "ranges: [1.3,1.9,2.05,inf,1.64]"
values = list(map(float, [x.strip('[]') for x in (line.split(' ')[1]).split(',') if 'inf' not in x]))
Вывод:
[1.3, 1.9, 2.05, 1.64] # list of float values
Затем вы можете применить это к каждой строке файла, которая начинается с 'ranges:'
, что даст вамсписок отдельных строк значений списков.Обратите внимание на использование with open(...
, которое в целом безопаснее использовать для файлов, потому что файл всегда будет правильно закрыт, независимо от того, что произойдет.
values = []
with open('new_sample.txt', 'r') as f:
for line in f.readlines():
if line.startswith('ranges:'):
line_values = list(map(float, [x.strip #.... and so on, see above
values.append(line_values)
Но если ваши строки могут отличаться, болеенужен общий подход.