как частично преобразовать строковые переменные в списке в числа с плавающей точкой?
Есть файл input.txt с таблицей, где первый столбец - дата, остальные проценты с 2 числами после запятой (пример ниже). Подскажите, пожалуйста, как мне получить список следующего содержания:
rates = [
['RUB', 'ON', '1D', '2D', '3D', '4D', '5D', '1W', '2W'],
['01.01.2020', 1.12, 2.12, 3.12, 4.12, 5.12, 6.12, 7.12, 8.12],
['02.01.2020', 1.13, 2.13, 3.13, 4.13, 5.13, 6.13, 7.13, 8.13],
['03.01.2020', 1.14, 2.14, 3.14, 4.14, 5.14, 6.14, 7.14, 8.14],
['04.01.2020', 1.15, 2.15, 3.15, 4.15, 5.15, 6.15, 7.15, 8.15],
['05.01.2020', 1.16, 2.16, 3.16, 4.16, 5.16, 6.16, 7.16, 8.16]
]
где все процентные ставки будут типа float, а все оставшиеся даты и первый список с заголовками останутся строками.
Пример содержимого файла input.txt
RUB ON 1D 2D 3D 4D 5D 1W 2W
01.01.2020 1,12 2,12 3,12 4,12 5,12 6,12 7,12 8,12
02.01.2020 1,13 2,13 3,13 4,13 5,13 6,13 7,13 8,13
03.01.2020 1,14 2,14 3,14 4,14 5,14 6,14 7,14 8,14
04.01.2020 1,15 2,15 3,15 4,15 5,15 6,15 7,15 8,15
05.01.2020 1,16 2,16 3,16 4,16 5,16 6,16 7,16 8,16
Ответы (1 шт):
Автор решения: Кирилл Малышев
→ Ссылка
import csv
rates = []
fn = 'input.txt'
with open(fn, newline='') as csvfile:
reader = csv.reader(csvfile, delimiter='\t')
rates.append(next(reader, None))
for row in reader:
if row:
rates.append([row[0]] + [float(x.replace(',', '.')) for x in row[1:]])
print(*rates, sep='\n')