根据列表中每个元素的内容获取元素表单列表

时间:2017-11-19 11:12:38

标签: python

我刚刚开始学习并面对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获取这些信息但不幸的是我没有成功。

你能帮我怎么做吗?)

2 个答案:

答案 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文件或其他任何东西。希望这会有所帮助。