как частично преобразовать строковые переменные в списке в числа с плавающей точкой?

Есть файл 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')
→ Ссылка