Combining lines in a txt file to complete phrases

Question:

File content as follows (it’s a part of video subtitles).
I want to combine lines to complete phrases.

1
00:00:00,000 --> 00:00:13,680
Je vais mettre en direct sur l'hôtel comme ça on peut regarder les messages et tout.

2
00:00:13,680 --> 00:00:14,680
Ouais.

3
00:00:14,680 --> 00:00:20,080
Tiens je vais recevoir la notification Romain étant direct.

4
00:00:20,080 --> 00:00:22,720
Vas-y ouvrez le live.

5
00:00:22,720 --> 00:00:25,640
Ouais c'est bon on vous entend.

6
00:00:25,640 --> 00:00:26,640
Nice.

7
00:00:26,640 --> 00:00:28,480
Attends je vais présenter vite fait du coup, je vais attendre que tout le monde vienne.

8
00:00:28,480 --> 00:00:40,640
Salut Raphaël, salut Ismaël, salut Jean-Marc, bonjour à tous, bonjour Clément, bonjour

9
00:00:40,640 --> 00:00:41,640
Thierry.

10
00:00:41,640 --> 00:00:42,640
Bonjour à tous.

11
00:00:42,640 --> 00:00:44,640
Je ne sais pas s'ils nous entendent ou pas normalement.

12
00:00:44,640 --> 00:00:45,640
Si si ils t'entendent là.

13
00:00:45,640 --> 00:00:46,640
On va attendre.

14
00:00:46,640 --> 00:00:51,480
Limite on peut nous filmer en attendant que ça démarre vite fait, attends.

15
00:00:51,480 --> 00:00:53,360
Je vais vous filmer vous.

16
00:00:53,360 --> 00:00:57,520
Bon les gars juste pour faire une petite précision aujourd'hui on va avoir deux intervenants,

17
00:00:57,520 --> 00:01:02,560
on va avoir, je vais couper ma tête, on va avoir du coup CP Dropshipping, je pense que

18
00:01:02,560 --> 00:01:06,320
vous le connaissez, il a une chaîne YouTube, il a un compte Facebook assez suivi donc voilà

19
00:01:06,320 --> 00:01:11,520
avec un très beau t-shirt Balenciaga et aussi Jérémy donc on a deux Dropshippers qui pèsent

20
00:01:11,520 --> 00:01:16,960
assez lourd et voilà Jérémy c'est un administrateur du Discord et qui commence à faire tout

21
00:01:16,960 --> 00:01:21,520
est bien, qui commence à faire pas mal de souis, qui va venir habiter sur Malte bientôt

22
00:01:21,520 --> 00:01:22,520
je crois.

23
00:01:22,520 --> 00:01:25,520
On a regardé les vidéos d'avion là tout à l'heure.

24
00:01:25,520 --> 00:01:28,520
Il faudrait que je le ramène une semaine.

25
00:01:28,520 --> 00:01:30,320
Ah merde, je me suis trompé.

I have a txt file in the above format and I want to convert this file with DeepL.
However, in this file, the translation is inaccurate because the sentences are not always complete.
So what I want to do is if the sentence in one line is not finished, I add the parts of the
next lines to that line until that sentence is complete and delete the parts I added from the other lines.

1
00:00:00,000 --> 00:00:13,680
Je vais mettre en direct sur l'hôtel comme ça on peut regarder les messages et tout.

2
00:00:13,680 --> 00:00:14,680
Ouais.

3
00:00:14,680 --> 00:00:20,080
Tiens je vais recevoir la notification Romain étant direct.

4
00:00:20,080 --> 00:00:22,720
Vas-y ouvrez le live.

5
00:00:22,720 --> 00:00:25,640
Ouais c'est bon on vous entend.

6
00:00:25,640 --> 00:00:26,640
Nice.

7
00:00:26,640 --> 00:00:28,480
Attends je vais présenter vite fait du coup, je vais attendre que tout le monde vienne.

8
00:00:28,480 --> 00:00:40,640
Salut Raphaël, salut Ismaël, salut Jean-Marc, bonjour à tous, bonjour Clément, bonjour Thierry.

9
00:00:40,640 --> 00:00:41,640

10
00:00:41,640 --> 00:00:42,640
Bonjour à tous.

11
00:00:42,640 --> 00:00:44,640
Je ne sais pas s'ils nous entendent ou pas normalement.

12
00:00:44,640 --> 00:00:45,640
Si si ils t'entendent là.

13
00:00:45,640 --> 00:00:46,640
On va attendre.

14
00:00:46,640 --> 00:00:51,480
Limite on peut nous filmer en attendant que ça démarre vite fait, attends.

15
00:00:51,480 --> 00:00:53,360
Je vais vous filmer vous.

16
00:00:53,360 --> 00:00:57,520
Bon les gars juste pour faire une petite précision aujourd'hui on va avoir deux intervenants, on va avoir, je vais couper ma tête, on va avoir du coup CP Dropshipping, je pense que vous le connaissez, il a une chaîne YouTube, il a un compte Facebook assez suivi donc voilà avec un très beau t-shirt Balenciaga et aussi Jérémy donc on a deux Dropshippers qui pèsent assez lourd et voilà Jérémy c'est un administrateur du Discord et qui commence à faire tout est bien, qui commence à faire pas mal de souis, qui va venir habiter sur Malte bientôt je crois.

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
On a regardé les vidéos d'avion là tout à l'heure.

24
00:01:25,520 --> 00:01:28,520
Il faudrait que je le ramène une semaine.

25
00:01:28,520 --> 00:01:30,320
Ah merde, je me suis trompé.

For doing this, I’ve tried this lines of code. But I couldn’t complete and understood what to do exactly

import re

file = open('files/FINAL/v23FINAL.srt') 
content = file.readlines()
new = ''

i = 2
max = len(content) - 1

while i < max :
    now = str(content[i][-2])
    next = str(content[i+4][-2])

    print(now + 'n' + next)

    if now != '.' or now != '?' or now != '!':
        for j in range(len(content[i+4])):
            if content[i+4][j] == '.' or content[i+4][j] == '?' or content[i+4][j] == '!':
                print(content[i+4][0:j+1])
                print(content[i+4][j+2:len(content)-2])
                break

        i += 4

    else:
        new += content[i]
        new += content[i+1]
        new += content[i+2]
        new += 'n'

        i += 4


with open('newText.srt', 'a') as n:
    n.write(new)
Asked By: Ömer Work

||

Answers:

You should split the file into records by its record separator, double newlines, then extract the lines and their headers, save them into lists, and defer producing output from the lists until the current line ends with a sentence ending character:

with open('input.srt') as file:
    lines = []
    headers = []
    for record in file.read().split('nn'):
        number, time, line, *_ = record.split('n')
        lines.append(line)
        headers.append(f'{number}n{time}')
        if line[-1] in '.!?':
            print(headers.pop(0))
            print(' '.join(lines), end='nn')
            if headers:
                print('nn'.join(headers), end='nn')
            lines = []
            headers = []

Demo: https://replit.com/@blhsing/ImportantVioletAutoresponder

Answered By: blhsing
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.