我刚刚开始学习并面对Python中的一个问题。
我有一个srt doc(字幕)。姓名 - 子。它看起来像:
8
00:01:03,090 --> 00:01:05,260
<b><font color="#008080">MATER:</font></b> Yes, sir, you did.
<b><font color="#808000">(MCQUEEN GASPS)</font></b>
9
00:01:05,290 --> 00:01:07,230
You used to say
that all the time.
在Python中它看起来像:
'3', '00:00:46,570 --> 00:00:48,670', '<b><font color="#008080">MCQUEEN:</font></b> Okay, here we go.', '', '4', '00:00:48,710 --> 00:00:52,280', 'Focus. Speed. I am speed.', '', '5', '00:00:52,310 --> 00:00:54,250', '<b><font color="#808000">(ENGINES ROARING)</font></b>', '',
另外,我有一个单词列表(名字 - 名词)。它看起来像:
['man', 'poster', 'motivation', 'son' ... 'boy']
让我们看一下这个例子:
...'4', '00:00:48,710 --> 00:00:52,280', 'Focus. Speed. I am speed.', '', '5',....
我需要做的是从字幕中的列表中找到单词(第一个apperrence,作为插图,“速度”)并列出外观单词的时间(00:00:48,710 - &gt; 00:00:52,280)和序列号(4),它位于文档中的时间之前。我试图用indx获取这些信息但不幸的是我没有成功。
你能帮我怎么做吗?)
答案 0 :(得分:1)
欢迎使用SO和Python。虽然这不是一个答案,但我认为它可能会有所帮助。表的唯一Python库是Pandas。您可以将srt文件读入数据框并从那里开始工作。 (你需要学习Pandas语法做的事情,但这是投入时间很长)
import pandas as pd
import requests
# Lion King subtitle
data = requests.get("https://opensubtitles.co/download/67071").text
df = pd.DataFrame([i.split("\r\n") for i in data.split("\r\n\r\n")])
df = df.rename(columns={0:"Index",1:"Time",2:"Row1",3:"Row2"}).set_index("Index")
打印前5行print(df.head())
给出:
Time Row1 Row2
Index
1 00:01:01,600 --> 00:01:05,800 <i>Nants ingonyama</i> None
2 00:01:05,900 --> 00:01:07,200 <i>Bagithi baba</i> None
3 00:01:07,300 --> 00:01:10,600 <i>Sithi uhhmm ingonyama</i> None
4 00:01:10,700 --> 00:01:13,300 <i>lngonyama</i> None
5 00:01:13,300 --> 00:01:16,400 <i>Nants ingonyama</i> None
答案 1 :(得分:0)
继续 Anton vBR 的建议:
words=['ingonyama','king']
results=[]
for w in words:
for row in df.itertuples():
if row[2] is not None:
if w in row[2].lower():
results.append((w, row[0], row[1]))
if row[3] is not None:
if w in row[3].lower():
results.append((w, row[0], row[1]))
print(results)
您将获得一个元组列表,每个元组都包含您要搜索的单词,出现的序列号以及出现的时间范围。然后你可以将这些元组写入csv文件或其他任何东西。希望这会有所帮助。