我是Python的初学者,正在尝试编写我的第一个脚本。 我有一个多行的文本文件,最终需要从列表中提取一段时间码。 列表如下所示:
010 AX V C 01:01:26:10 01:01:27:17 01:00:08:19 01:00:10:02
* FROM CLIP NAME: movie1.mov
011 AX V C 01:01:30:19 01:01:32:19 01:00:10:02 01:00:12:02
* FROM CLIP NAME: movie2.mov
012 AX V C 01:00:15:01 01:00:17:13 01:00:12:02 01:00:14:14
* FROM CLIP NAME: movie3.mov
等等
我的第一个目标是获取显示的第一时间代码。你知道吗
我知道每行的first timecode从字符29开始,到字符40结束,所以我开始尝试删除前29个字符,但每次打印时都没有从正确的字符开始。你知道吗
timecode = [] # Declaring my empty list.
with open ('test.edl', 'rt') as myfile: # Opening the edl.
for myline in myfile: # For each line in the file,
print(myline.lstrip(myline[:29])) # strip first 29 chars
而不是剥去头29个字符,我得到的回报是:
:01:26:10 01:01:27:17 01:00:08:19 01:00:10:02
movie1.mov
:01:30:19 01:01:32:19 01:00:10:02 01:00:12:02
movie2.mov
:00:15:01 01:00:17:13 01:00:12:02 01:00:14:14
movie3.mov
即使我将print(myline.lstrip(myline[:29]))
更改为[:25]
,它也以相同的方式打印行。你知道吗
当我使用[:20]
时,它给了我一个更好的结果,但它仍然是不正确的。你知道吗
C 01:00:15:01 01:00:17:13 01:00:12:02 01:00:14:14
我一直在不懈地寻找,想弄清楚我做错了什么,但运气不好。。再次,完全初学者在这里,所以我很抱歉,如果这是纯粹的愚蠢。你知道吗
非常感谢!你知道吗
你想从29岁开始,而不是29岁结束。而且,
lstrip()
会起飞更多。 尝试用以下内容替换第四行:lstrip
并不是你所期望的那样。myline.lstrip(myline[:29])
将删除myline
左侧的字符,只要它们在myline[:29]
中的任何地方,即myline
的第一个29
字符。因此,您当然要删除第一个29
字符,但也要删除时间代码开头的01
,因为0
和1
出现在myline
的第一个29
字符中。(仍然会删除0
,因为您错误计算了绑定,myline[:29]
将包含第29
个字符)。你知道吗您可以选择所有字符,从第
29
个字符开始,使用myline[29:]
。你知道吗相关问题 更多 >
编程相关推荐