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

2024-09-30 01:32:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚开始学习,在Python中遇到了一个问题。你知道吗

我有一个srt文件(副标题)。Name-sub。它看起来像:

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>', '',

另外,我还有一个单词列表(name-noun)。它看起来像:

['man', 'poster', 'motivation', 'son' ... 'boy']

让我们看看这个例子:

...'4', '00:00:48,710 --> 00:00:52,280', 'Focus. Speed. I am speed.', '', '5',....

我需要做的是从副标题列表中找到单词(第一次出现,作为一个插图,“Speed”),并进入列表中单词出现的时间(00:00:48710-->;00:00:52280)和序列号(4),它位于文档中时间之前。我试图通过indx获得这些信息,但不幸的是我没有成功。你知道吗

你能帮我怎么做吗?)你知道吗


Tags: 文件name列表时间am单词colorfocus
2条回答

欢迎使用SO和Python。虽然这不是一个答案,但我认为它可能会有所帮助。唯一的Python表库是Pandas。您可以将srt文件读入一个数据帧,然后从那里开始工作。(你需要学习做事情的语法,但这是一个很好的投资时间)

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

继续安东·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文件或者别的什么。希望这有帮助。你知道吗

相关问题 更多 >

    热门问题