Я читаю из csv_reader, строка за строкой, и пытаюсь преобразовать список строк с плавающей точкой в одной строке. В настоящее время у меня есть:
list([float(i) for i in map(list, csv_reader)])
Это явно не работает. Как бы я достиг того, чего хочу? Я хочу, чтобы все это тоже было в одной строке.
Требуются ли мне две map
функции? Может быть, две Pythonic for
петли?
Функция, с которой я имею дело:
def csv_input(filename):
print(f'Currently reading the annotations from {filename}')
try:
csv_input_file = open(filename, 'rt')
except FileNotFoundError:
program_help()
print("[Error] Input File not found")
csv_reader = csv.reader(csv_input_file, delimiter=',')
unfiltered_annots = list(float(i) for i in map(list, csv_reader))
csv_input_file.close()
return unfiltered_annots
Мой CSV-файл выглядит так:
11, 11, 24, 24, 0.75
10, 11, 20, 20, 0.8
11, 9, 24, 24, 0.7
40, 42, 20, 20, 0.6
И ошибка, которую я получаю:
Traceback (most recent call last):
File "maximal_supression.py", line 124, in test_google_doc_example
unfiltered_annots = csv_input('example_input.csv')
File "maximal_supression.py", line 34, in csv_input
unfiltered_annots = list(float(i) for i in map(list, csv_reader))
File "maximal_supression.py", line 34, in <genexpr>
unfiltered_annots = list(float(i) for i in map(list, csv_reader))
TypeError: float() argument must be a string or a number, not 'list'