python-3.x 遍历SRT文件直到找到索引

nnsrf1az  于 2022-12-27  发布在  Python
关注(0)|答案(1)|浏览(123)

这听起来像是"迭代文件直到满足条件"的问题(我已经检查过了),但它对我不起作用。
给定一个SRT文件(任意)srtDir,我想转到索引choice并获取时间码值和标题值。
我执行了以下操作,该操作应该迭代SRT文件,直到满足条件:

import os

srtDir = "./media/srt/001.srt"
index = 100 #Index. Number is an examaple
found = False

with open(srtDir, "r") as SRT:
    print(srtDir)
    content = SRT.readlines()
    content = [x.strip() for x in content]
    for x in content:
        print(x)
        if x == index:
            print("Found")
            found = True
            break

if not found:
    print("Nothing was found")

正如所说,它应该迭代直到找到索引,但它返回"什么都没有找到",这很奇怪,因为我可以看到屏幕上打印的数字。
我做错了什么?
(我已经检查了图书馆,AFAIK,没有人可以返回时间码和字幕给定的索引)

mtb9vblg

mtb9vblg1#

您的代码中存在类型不匹配:indexint,但是循环中的xstr。在Python中,100 == "100"的计算结果是False。这种bug的解决方案是采用一个定义良好的数据模型,并编写一致地应用它的库方法。
然而,对于这样的事情,最好不要重新发明轮子,让其他人为你做无聊的工作。

import srt

# Sample SRT file
raw = '''\
1
00:31:37,894 --> 00:31:39,928
OK, look, I think I have a plan here.

2
00:31:39,931 --> 00:31:41,931
Using mainly spoons,

3
00:31:41,933 --> 00:31:43,435
we dig a tunnel under the city and release it into the wild.
'''

# Parse and get index
subs = list(srt.parse(raw))

def get_index(n, subs_list):
    for i in subs_list:
        if i.index == n:
            return i
    return None

s = get_index(2, subs)

print(s)

参见:

相关问题