我有一个srt文件,为了能够使用DeepL翻译它,我将碎片化的句子收集到一行中。现在我想做一个相反的过程。换句话说,我想将单行中的句子随机分成多行,如下所示。
这是我的文件:
1
00:00:00,000 --> 00:00:13,680
Otele canlı yayın koyacağım, böylece mesajlara ve diğer şeylere bakabileceğiz.
2
00:00:13,680 --> 00:00:14,680
Evet.
3
00:00:14,680 --> 00:00:20,080
Romain'in direkt olduğunu bildireceğim.
4
00:00:20,080 --> 00:00:22,720
Devam edin ve canlı yayını açın.
5
00:00:22,720 --> 00:00:25,640
Evet, seni duyabiliyoruz.
6
00:00:25,640 --> 00:00:26,640
Güzel.
7
00:00:26,640 --> 00:00:28,480
Hızlı bir sunum yapacağım, herkesin gelmesini bekleyeceğim.
8
00:00:28,480 --> 00:00:40,640
Merhaba Raphaël, merhaba Ismaël, merhaba Jean-Marc, herkese merhaba, merhaba Clément, merhaba Thierry.
9
00:00:40,640 --> 00:00:41,640
10
00:00:41,640 --> 00:00:42,640
Herkese merhaba.
11
00:00:42,640 --> 00:00:44,640
Normalde bizi duyup duymadıklarını bilmiyorum.
12
00:00:44,640 --> 00:00:45,640
Evet, artık seni duyabiliyorlar.
13
00:00:45,640 --> 00:00:46,640
Bekleyeceğiz.
14
00:00:46,640 --> 00:00:51,480
Hızlı bir şekilde çalışmasını beklerken bizi bile filme alabilirsiniz, sadece bekleyin.
15
00:00:51,480 --> 00:00:53,360
Seni filme alacağım.
16
00:00:53,360 --> 00:00:57,520
Pekala çocuklar, sadece küçük bir açıklama yapmak için bugün iki konuşmacımız olacak, kafamı keseceğim, CP Dropshipping olacak, sanırım onu tanıyorsunuz, bir YouTube kanalı var, Çok güzel bir Balenciaga tişörtü olan bir Facebook hesabı var ve ayrıca Jérémy, yani oldukça ağır olan iki Dropshipper'ımız var ve Jérémy her şeyi doğru yapmaya başlayan, oldukça fazla para kazanmaya başlayan ve sanırım yakında Malta'ya gelip yaşayacak olan bir Discord yöneticisi.
17
00:00:57,520 --> 00:01:02,560
18
00:01:02,560 --> 00:01:06,320
19
00:01:06,320 --> 00:01:11,520
20
00:01:11,520 --> 00:01:16,960
21
00:01:16,960 --> 00:01:21,520
22
00:01:21,520 --> 00:01:22,520
23
00:01:22,520 --> 00:01:25,520
Daha önce orada uçak videolarını izlemiştik.
24
00:01:25,520 --> 00:01:28,520
Bir hafta sonra geri getirmem gerekecek.
25
00:01:28,520 --> 00:01:30,320
Kahretsin, yanılmışım.
我想用这个代替:
1
00:00:00,000 --> 00:00:13,680
Otele canlı yayın koyacağım, böylece mesajlara ve diğer şeylere bakabileceğiz.
2
00:00:13,680 --> 00:00:14,680
Evet.
3
00:00:14,680 --> 00:00:20,080
Romain'in direkt olduğunu bildireceğim.
4
00:00:20,080 --> 00:00:22,720
Devam edin ve canlı yayını açın.
5
00:00:22,720 --> 00:00:25,640
Evet, seni duyabiliyoruz.
6
00:00:25,640 --> 00:00:26,640
Güzel.
7
00:00:26,640 --> 00:00:28,480
Hızlı bir sunum yapacağım, herkesin gelmesini bekleyeceğim.
8
00:00:28,480 --> 00:00:40,640
Merhaba Raphaël, merhaba Ismaël, merhaba Jean-Marc, herkese merhaba, merhaba Clément,
9
00:00:40,640 --> 00:00:41,640
merhaba Thierry.
10
00:00:41,640 --> 00:00:42,640
Herkese merhaba.
11
00:00:42,640 --> 00:00:44,640
Normalde bizi duyup duymadıklarını bilmiyorum.
12
00:00:44,640 --> 00:00:45,640
Evet, artık seni duyabiliyorlar.
13
00:00:45,640 --> 00:00:46,640
Bekleyeceğiz.
14
00:00:46,640 --> 00:00:51,480
Hızlı bir şekilde çalışmasını beklerken bizi bile filme alabilirsiniz, sadece bekleyin.
15
00:00:51,480 --> 00:00:53,360
Seni filme alacağım.
16
00:00:53,360 --> 00:00:57,520
Pekala çocuklar, sadece küçük bir açıklama yapmak için bugün iki konuşmacımız olacak,
17
00:00:57,520 --> 00:01:02,560
kafamı keseceğim, CP Dropshipping olacak, sanırım onu tanıyorsunuz,
18
00:01:02,560 --> 00:01:06,320
bir YouTube kanalı var, Çok güzel bir Balenciaga tişörtü olan bir Facebook hesabı var
19
00:01:06,320 --> 00:01:11,520
ve ayrıca Jérémy, yani oldukça ağır olan iki Dropshipper'ımız var ve Jérémy her şeyi doğru yapmaya başlayan,
20
00:01:11,520 --> 00:01:16,960
oldukça fazla para kazanmaya başlayan
21
00:01:16,960 --> 00:01:21,520
ve sanırım yakında Malta'ya gelip yaşayacak olan
22
00:01:21,520 --> 00:01:22,520
bir Discord yöneticisi.
23
00:01:22,520 --> 00:01:25,520
Daha önce orada uçak videolarını izlemiştik.
24
00:01:25,520 --> 00:01:28,520
Bir hafta sonra geri getirmem gerekecek.
25
00:01:28,520 --> 00:01:30,320
Kahretsin, yanılmışım.
我认为你可以通过以下步骤做到这一点:
步骤1:通过'nn':
将文本拆分为(index,time_span,text)或((index,time_span)with open('original.srt') as org_file:
text = org_file.read()
segment_list = text.split('nn')
步骤2:找到连续的非文本段,并将之前的文本按比例拆分为这些非文本段:
processed_segment_list = []
tmp_segment_list = []
dirty = False
for segment in segment_list:
element_list = segment.split('n')
if len(element_list) == 3: # for example element_list = ['1', '00:00:00,000 --> 00:00:13,680', 'Otele canlı yayın koyacağım, böylece mesajlara ve diğer şeylere bakabileceğiz.']
if dirty:
processed_segment_list.extend(allocate_long_text(tmp_segment_list))
dirty = False
tmp_segment_list = []
if tmp_segment_list:
processed_segment_list.append(tmp_segment_list.pop(0))
tmp_segment_list.append(segment)
elif len(element_list) == 2: # for example element_list = ['9', '00:00:40,640 --> 00:00:41,640']
tmp_segment_list.append(segment)
dirty = True
else:
print(segment)
raise ValueError('Something went wrong...')
关键是函数allocate_long_text
。对于其参数,tmp_segment_list
包括一个长文本段和几个无文本段。你说你想随机分割它们,但你可以做得更好。你有每个段的持续时间,所以如果一个段的持续时间很长,你可以为这个段分配更多的文本。这样,您需要编写一些函数来解析时间,并根据每个片段的持续时间将长文本切割为len(tmp_segment_list)
部分。否则,你可以用相等的单词数分隔句子。
步骤3:将结果写入文件:
with open('processed.srt', 'w') as proc_file:
proc_file.write('nn'.join(processed_segment_list))