Я только что присоединился к вам после прочтения тонны информации за последние несколько месяцев, так как я получаю основания с Python.Python CSV найти строку и передать номер столбца переменной
Во всяком случае, я очень новичок и занимаюсь исследованиями, насколько это возможно, но большинство ответов немного из моих досягаемости в понимании и, похоже, не делают именно то, что мне нужно.
Из чтения, которое я сделал, я не уверен, должен ли я познакомиться с Panda или нет, но мне в основном нужно сделать простое форматирование, преобразование и реорганизацию файла ALE. ALE - это простой файл списка с разделителями табуляции, содержащий имена и метаданные видеороликов. Заголовки расположены в строке 8 и данные контента на 11 и вниз. Вот пример:
1 Heading
2 FIELD_DELIM TABS
3 VIDEO_FORMAT 1080
4 AUDIO_FORMAT 48khz
5 FPS 23.976
6
7 Column
8 #### COLUMN HEADERS ####
9
10 Data
11 #### TAB DELIMITED DATA ####
На данный момент мы предполагаем, что мои входные файлы были отформатированы раздеться строки 1-7, 9 и 10, так что мы просто имеем строку заголовка в строке 1, а данные начинается строка 2.
Моя первая задача с этой программой - преобразовать весь столбец данных в новый формат, который я правильно работаю, но только если я нацелен на столбец, который я ищу в наборе данных, который не имеет заголовков.
for row in ale_file:
row[3] = timecode_to_frames(row[3])
print row
Проблема заключается в том, я не всегда знаю, что столбец чисел существует данные в (так как каждая программа будет выводить метаданные в различных порядках), но я знаю, что имя заголовка. Как-то мне нужно прочитать строку заголовка, и когда он найдет три заголовка с именем «start», «end» и «duration», он передаст эти номера столбцов в переменную. Затем в цикле for выше я мог бы запустить функцию timecode_to_frames в номерах строк, соответствующих заголовкам.
Я считаю, что это должно быть довольно просто вдоль этих линий (простите меня, если я ужасно выключен):
for row in ale_file:
for col in row:
if col == 'start':
start_col = ##column number##
Тогда в мой существующий код, который я мог бы назвать переменную:
for row in ale_file:
row[start_col] = timecode_to_frames(row[start_col])
print row
Замечание: В моем цикле FOR мне нужно явно пропускать строку 1, поскольку это просто заголовок, так как он не будет иметь правильно отформатированные данные, ожидаемые функцией. Возможно, гнездится цикл for в цикле while, например while row != 0:
или что-то в этом роде?
Любая помощь была бы принята с благодарностью, спасибо!
Получить строку заголовка в переменную. Затем 'start_col = header.split ('\ t'). Index ('start')', 'end_col = header.split ('\ t'). Index ('end')' и т. Д. – leekaiinthesky