我是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
等
我的第一个目标是获取显示的第一个时间码。
我知道每一行的第一个时间码都从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
我一直在不停地搜索以弄清楚我在做什么错,但是没有运气。.同样,请在这里完成初学者,如果这很愚蠢,我感到抱歉。
非常感谢您!
答案 0 :(得分:3)
lstrip
并没有达到您的预期。只要在myline.lstrip(myline[:29])
中的任意位置找到{em},myline
就会从myline[:29]
的左侧删除字符,即{{ 1}}。因此,您肯定要删除时间代码的前29
个字符,而且还要删除myline
,因为29
和01
出现在前{{1 }个0
个字符。 (无论如何,1
都会被删除,因为您错误地计算了边界,29
会包含第myline
个字符)。
您可以选择所有字符,从第0
个字符到myline[:29]
。
答案 1 :(得分:1)
您想从29开始,而不是从29开始。另外,lstrip()
将会起飞。
尝试用此替换您的第四行:
print(myline[29:])