我在过去几个月阅读了大量信息后才加入这里,因为我对 Python 有了一定的了解。
无论如何,我很新,并且一直在尽可能多地进行研究,但是大多数答案都超出了我的理解范围,并且似乎并没有完全满足我的需要。
从我所做的阅读来看,我不确定我是否应该熟悉 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:
东西中?
任何帮助将不胜感激,谢谢!