Не выводятся некоторые строчки в python3

Рейтинг: 0Ответов: 3Опубликовано: 22.08.2023

Есть скрипт, которая форматирует текст.

В выводе видно, что некоторые строчки по каким-то неизвестным причинам - пустые. Что делать? Как фиксануть?

Код:

import io
file = io.open("test.txt", 'r', encoding="utf-8")
if(0==0):
    while 1:
        str2 = file.readline()
        itog = ""
        number = str2.split(" ")[2]
        if(len(str2.split(" ")) == 10): 
            str3 = str2.split(" ")[6]+" "+str2.split(" ")[7]+" "+str2.split(" ")[8]
            str4= str2.split(" ")[9]
            if(str2.split(" ")[5] == "Мск"):
                itog=number[1:]+"/"+str2.split(" ")[3]+"-"+str2.split(" ")[5]+"/-/"+str2.split(" ")[0]+"/-/"+str4[1:-1]+"/"+str3[1:-1]
            else:
                itog=number[1:]+"/"+str2.split(" ")[3]+"-"+str2.split(" ")[5]+"/"+str2.split(" ")[0]+"/-/-/"+str4[1:-1]+"/"+str3[1:-1]
 
        if (len(str2.split(" ")) == 12):
            str3 = str2.split(" ")[6]+" "+str2.split(" ")[7]+" "+str2.split(" ")[8]
            str4= str2.split(" ")[len(str2.split(" "))-1]
            str5= str2.split(" ")[9]+" "+str2.split(" ")[10]
            if(str2.split(" ")[5] == "Мск"):
                itog=number[1:]+"/"+str2.split(" ")[3]+"-"+str2.split(" ")[5]+"/-/"+str2.split(" ")[0]+"/"+str5[1:-1]+"/"+str4[1:-1]+"/"+str3[1:-1]
            else:
                itog=number[1:]+"/"+str2.split(" ")[3]+"-"+str2.split(" ")[5]+"/"+str2.split(" ")[0]+"/-/"+str5[1:-1]+"/"+str4[1:-1]+"/"+str3[1:-1]
 
        if (len(str2.split(" ")) > 12):
            str3 = str2.split(" ")[6]+" "+str2.split(" ")[7]+" "+str2.split(" ")[8]
            if(str2.split(" ")[len(str2.split(" "))-1] != "(Ежедневно)"):
                str4= str2.split(" ")[len(str2.split(" "))-2]+" "+str2.split(" ")[len(str2.split(" "))-1]
                str45=str2.split(" ")[9:-2]
            else:
                str4= str2.split(" ")[len(str2.split(" "))-1]
                str45=str2.split(" ")[9:-1]
                str5 = ""
                for i in str45:
                    str5+=i+" "
                str5 = str5[1:-2]
                if(str2.split(" ")[5] == "Мск"):
                    itog=number[1:]+"/"+str2.split(" ")[3]+"-"+str2.split(" ")[5]+"/-/"+str2.split(" ")[0]+"/"+str5+"/"+str4[1:-1]+"/"+str3[1:-1]
                else:
                    itog=number[1:]+"/"+str2.split(" ")[3]+"-"+str2.split(" ")[5]+"/"+str2.split(" ")[0]+"/-/"+str5+"/"+str4[1:-1]+"/"+str3[1:-1]
        print(itog)
file.close()

Файл test.txt:

0:45 Поезд №6501 Троицк - Мск (Обычно 5 путь) (По будням)
0:55 Поезд №152 Мск - Питер (Обычно 3 путь) (По нечётным)
0:57 Поезд №6401 Аэропорт - Мск (Обычно 6 путь) (Ежедневно)
1:11 Поезд №288 Мск - Питер (Обычно 4 путь) (По праздникам)
1:42 Поезд №162 Мск - Питер (Обычно 3 путь) (По чётным)
...

Полная версия: https://pastebin.com/TYKyxczb

Вывод:

 
 
6401/Аэропорт-Мск/-/0:57/-/Ежедневно)/Обычно 6 путь
 

...

Полная версия: https://pastebin.com/S9x366Dc

Ответы

▲ 3
import re

mp = re.compile(
    r'^(?P<time>\d{1,2}:\d{2}).+№(?P<number>\d+)\s*(?P<direction>.+?[\w.])\s*\((?P<details>\w.+)\)'
)

dp = re.compile(
    r'\)\s*\('
)

with open('data.txt', encoding='utf-8') as f:
    data = list(map(str.strip, f.readlines()))

elements = []

for item in data:
    if success := mp.search(item):
        pre = success.groupdict()
# Если регулярка отработала правиьно 
# то здесь мы получим словарь на подобии такого
# {'time': '21:48', 'number': '6532', 'direction': 'Мск - Троицк', 'details': 'Обычно 5 путь) (со всеми кроме 106 км) (Ежедневно'}

# Обратите внимание, что в данном случае ') (' можно использовать как разделитель

        # way, *details, schedule = dp.split(pre['details'])
        # Хорошая практика - не использовать регулярки там, где можно обойтись без них
        way, *details, schedule = pre['details'].split(') (') # Используем распаковку. (если не понятно погуглите)
        
        det = ', '.join(details) or None
        
        # Если Вы используете python >= 3.10 то словари можно объединить так

        elements.append(
            pre | {
                'details': det,
                'way': way,
                'schedule': schedule
            }
        )

        # Если нет, то так

        # elements.append(
        #     {**pre,
        #      **{
        #          'details': det,
        #          'way': way,
        #          'schedule': schedule
        #      }
        #      }
        # )

В результате мы получим список вот таких словарей

[
{'time': '22:55',
  'number': '6347',
  'direction': 'Рылеево - Мск',
  'details': None,
  'way': 'Обычно 5 путь',
  'schedule': 'Ежедневно'},
 {'time': '23:08',
  'number': '38',
  'direction': 'Мск - Выборг',
  'details': None,
  'way': 'Обычно 4 путь',
  'schedule': 'Ежедневно'},
 {'time': '23:38',
  'number': '604',
  'direction': 'Мск_Констант. - Мск_Фирмен.',
  'details': None,
  'way': 'Обычно 3 путь',
  'schedule': 'Ежедневно'},
 {'time': '23:50',
  'number': '6534',
  'direction': 'Мск - Троицк',
  'details': 'со всеми кроме 106 км',
  'way': 'Обычно 7 путь',
  'schedule': 'Ежедневно'}
]

Который можно использовать преобразуя данные к любому виду
Ну например так

path = 'number', 'direction', 'time', 'details', 'way', 'schedule'

for elem in elements:
    print(
        '/'.join(elem[part] or '-' for part in path)
    )

6501/Троицк - Мск/0:45/-/Обычно 5 путь/По будням
152/Мск - Питер/0:55/-/Обычно 3 путь/По нечётным
6401/Аэропорт - Мск/0:57/-/Обычно 6 путь/Ежедневно
288/Мск - Питер/1:11/-/Обычно 4 путь/По праздникам
162/Мск - Питер/1:42/-/Обычно 3 путь/По чётным
6304/Мск - Рылеево/4:04/со всеми/Обычно 5 путь/По будням
6303/Рылеево - Мск/4:13/-/Обычно 7 путь/По будням
6404/Мск - Аэропорт/4:16/со всеми/Обычно 6 путь/Ежедневно
6702/Мск - Констант./4:28/со всеми кроме Заводская, Янино/обычно 7 путь/По будням
6403/Аэропорт - Мск/4:31/-/Обычно 5 путь/Ежедневно
287/Питер - Мск/4:40/-/Обычно 3 путь/По праздникам
6701/Констант. - Мск/4:49/-/Обычно 6 путь/По будням
6306/Мск - Рылеево/5:02/со всеми кроме Фанагорийская/Обычно 5 путь/Ежедневно
601/Рыбинск - Мск/5:08/-/Обычно 4 путь/Ежедневно
6602/Мск - Вязево 2/5:14/со всеми кроме 106 км/Обычно 6 путь/По будням
6305/Рылеево - Мск/5:17/-/Обычно 5 путь/Ежедневно
151/Питер - Мск/5:20/-/Обычно 3 путь/По чётным
6406/Мск - Аэропорт/5:26/со всеми/Обычно 7 путь/Ежедневно
6601/Вязево 2 - Мск/5:29/-/Обычно 6 путь/По будням
6704/Мск - Констант./5:32/со всеми/Обычно 5 путь/Ежедневно
6405/Аэропорт - Мск/5:41/-/Обычно 7 путь/Ежедневно
6504/Мск - Троицк/5:44/со всеми кроме 106 км, Грибниково/Обычно 6 путь/По будням
603/Мск Фирмен. - Мск Констант./5:50/-/Обычно 4 путь/Ежедневно
6703/Констант. - Мск/5:53/-/Обычно 5 путь/Ежедневно
6503/Троицк - Мск/5:59/-/Обычно 6 путь/По будням
7502/Мск - Аэропорт/6:00/Остановки: Орешкино, Рылеево/Обычно 1 путь/Ежедневно
6308/Мск - Рылеево/6:03/со всеми кроме Янино/Обычно 7 путь/Ежедневно
6307/Рылеево - Мск/6:12/-/Обычно 7 путь/Ежедневно
37/Выборг - Мск/6:15/-/Обычно 3 путь/Ежедневно
6408/Мск - Аэропорт/6:21/со всеми/Обычно 5 путь/Ежедневно
6706/Мск - Констант./6:33/Остановки: Орешкино, Рылеево, далее везде/Обычно 2 путь/Ежедневно
6407/Аэропорт - Мск/6:36/-/Обычно 5 путь/Ежедневно
6310/Мск - Рылеево/6:45/со всеми/Обычно 6 путь/По будням
6506/Мск - Троицк/6:51/со всеми кроме 106 км, Греческий/Обычно 7 путь/Ежедневно
7501/Аэропорт - Мск/6:52/-/Обычно 1 путь/Ежедневно
6604/Мск - Вязево 2/6:57/со всеми кроме 106 км/Обычно 5 путь/Ежедневно
6705/Констант. - Мск/6:59/-/Обычно 2 путь/Ежедневно
7504/Мск - Аэропорт/7:00/Остановки: Орешкино, Рылеево/Обычно 1 путь/Ежедневно
6309/Рылеево - Мск/7:04/-/Обычно 6 путь/По будням
6505/Троицк - Мск/7:10/-/Обычно 7 путь/Ежедневно
7302/Мск - Рылеево/7:13/Остановки: Орешкино/Обычно 2 путь/По будням
6603/Вязево 2 - Мск/7:16/-/Обычно 5 путь/Ежедневно
6708/Мск - Констант./7:19/со всеми/Обычно 6 путь/По будням
6410/Мск - Аэропорт/7:25/со всеми кроме Заводская/Обычно 7 путь/Ежедневно
6707/Констант. - Мск/7:28/-/Обычно 6 путь/По будням
6312/Мск - Рылеево/7:31/со всеми/Обычно 5 путь/Ежедневно
6409/Аэропорт - Мск/7:34/-/Обычно 7 путь/Ежедневно
5/Питер - Мск/7:37/-/Обычно 4 путь/Ежедневно
6311/Рылеево - Мск/7:40/-/Обычно 5 путь/Ежедневно
6606/Мск - Вязево 2/7:43/Остановки: Дмитровская, Старцево, Троицк, Кирилово/Обычно 6 путь/По будням
7301/Рылеево - Мск/7:45/-/Обычно 2 путь/По будням
6710/Мск - Констант./7:49/со всеми кроме Фанагорийская, Янино, Янтарная/Обычно 7 путь/Ежедневно
7503/Аэропорт - Мск/7:52/-/Обычно 1 путь/Ежедневно
6508/Мск - Троицк/7:55/со всеми кроме 106 км/Обычно 5 путь/Ежедневно
6605/Вязево 2 - Мск/7:58/-/Обычно 7 путь/По будням
7538/Мск - Аэропорт/8:00/Остановки: Рылеево/Обычно 1 путь/Ежедневно
6507/Троицк - Мск/8:08/-/Обычно 5 путь/Ежедневно
6314/Мск - Рылеево/8:11/со всеми/Обычно 7 путь/По будням
6709/Констант. - Мск/8:14/-/Обычно 6 путь/Ежедневно
21/Питер - Мск/8:17/-/Обычно 3 путь/Ежедневно
6313/Рылеево - Мск/8:20/-/Обычно 7 путь/По будням
6412/Мск - Аэропорт/8:23/со всеми/Обычно 5 путь/Ежедневно
6411/Аэропорт - Мск/8:32/-/Обычно 5 путь/Ежедневно
6712/Мск - Констант./8:35/со всеми/Обычно 6 путь/Ежедневно
6608/Мск - Вязево 2/8:41/со всеми кроме 106 км/Обычно 7 путь/По будням
6711/Констант. - Мск/8:44/-/Обычно 6 путь/Ежедневно
6316/Мск - Рылеево/8:47/со всеми/Обычно 5 путь/Ежедневно
7537/Аэропорт - Мск/8:49/-/Обычно 2 путь/Ежедневно
17/Петрозаводск - Мск/8:59/-/Обычно 4 путь/Ежедневно
7544/Мск - Аэропорт/9:00/Остановки: Орешкино, Рылеево/Обычно 2 путь/Ежедневно
6607/Вязево 2 - Мск/9:03/-/Обычно 7 путь/По будням
6510/Мск - Троицк/9:06/со всеми кроме 106 км/Обычно 6 путь/Ежедневно
6315/Рылеево - Мск/9:09/-/Обычно 5 путь/Ежедневно
7804/Мск - Констант./9:12/Остановки: Орешкино, Рылеево/Обычно 1 путь/Ежедневно
6509/Троицк - Мск/9:15/-/Обычно 6 путь/Ежедневно
6714/Мск - Констант./9:18/со всеми кроме Заводская, Михайлово/Обычно 7 путь/По будням
6414/Мск - Аэропорт/9:24/со всеми кроме Фанагорийская/Обычно 5 путь/Ежедневно
6713/Констант. - Мск/9:27/-/Обычно 7 путь/По будням
159/Петрозаводск - Мск/9:30/-/Обычно 3 путь/Ежедневно
6413/Аэропорт - Мск/9:33/-/Обычно 5 путь/Ежедневно
6610/Мск - Вязево 2/9:36/со всеми кроме 106 км/Обычно 6 путь/Ежедневно
7803/Констант. - Мск/9:39/-/Обычно 1 путь/Ежедневно
6318/Мск - Рылеево/9:42/со всеми/Обычно 7 путь/По будням
6512/Мск - Троицк/9:48/со всеми кроме 106 км/Обычно 5 путь/Ежедневно
6609/Вязево 2 - Мск/9:51/-/Обычно 6 путь/Ежедневно
7544/Аэропорт - Мск/9:52/-/Обычно 2 путь/Ежедневно
6317/Рылеево - Мск/9:57/-/Обычно 7 путь/По будням
7546/Мск - Аэропорт/10:00/Остановки: Орешкино, Рылеево/Обычно 2 путь/Ежедневно
241/Минск - Мск/10:04/-/Обычно 4 путь/По чётным
6511/Троицк - Мск/10:07/-/Обычно 5 путь/Ежедневно
6716/Мск - Констант./10:10/со всеми/Обычно 6 путь/Ежедневно
6612/Мск - Вязево 2/10:16/со всеми кроме 106 км, Грибниково/Обычно 7 путь/Ежедневно
6715/Констант. - Мск/10:19/-/Обычно 6 путь/Ежедневно
6416/Мск - Аэропорт/10:22/со всеми/Обычно 5 путь/Ежедневно
6514/Мск - Троицк/10:34/со всеми кроме 106 км/Обычно 6 путь/Ежедневно
6415/Аэропорт - Мск/10:37/-/Обычно 7 путь/Ежедневно
6513/Троицк - Мск/10:43/-/Обычно 5 путь/Ежедневно
6611/Вязево 2 - Мск/10:49/-/Обычно 6 путь/Ежедневно
7545/Аэропорт - Мск/10:52/-/Обычно 1 путь/Ежедневно
7550/Мск - Аэропорт/11:00/Остановки: Рылеево/Обычно 1 путь/По выходным
6320/Мск - Рылеево/11:02/со всеми кроме Янино/Обычно 7 путь/По выходным
6319/Рылеево - Мск/11:11/-/Обычно 7 путь/По выходным
6418/Мск - Аэропорт/11:14/со всеми/Обычно 5 путь/Ежедневно
6718/Мск - Констант./11:26/со всеми кроме Фанагорийская, Заводская/Обычно 6 путь/Ежедневно
6417/Аэропорт - Мск/11:29/-/Обычно 5 путь/Ежедневно
6516/Мск - Троицк/11:38/со всеми кроме 106 км/Обычно 7 путь/По выходным
6717/Констант. - Мск/11:41/-/Обычно 6 путь/Ежедневно
6515/Троицк - Мск/11:47/-/Обычно 7 путь/По выходным
7549/Аэропорт - Мск/11:49/-/Обычно 2 путь/По выходным
161/Питер - Мск/11:55/-/Обычно 4 путь/По нечётным
7552/Мск - Аэропорт/12:00/Остановки: Рылеево/Обычно 2 путь/По выходным
6322/Мск - Рылеево/12:03/со всеми/Обычно 5 путь/Ежедневно
6321/Рылеево - Мск/12:12/-/Обычно 5 путь/Ежедневно
6720/Мск - Констант./12:21/со всеми/Обычно 6 путь/Ежедневно
6420/Мск - Аэропорт/12:33/со всеми/Обычно 7 путь/По выходным
6719/Констант. - Мск/12:42/-/Обычно 6 путь/Ежедневно
6614/Мск - Вязево 2/12:45/со всеми кроме 106 км/Обычно 5 путь/Ежедневно
6419/Аэропорт - Мск/12:48/-/Обычно 7 путь/По выходным
7551/Аэропорт - Мск/12:49/-/Обычно 1 путь/По выходным
7506/Мск - Аэропорт/13:00/Остановки: Рылеево/Обычно 1 путь/По выходным
6613/Вязево 2 - Мск/13:04/-/Обычно 5 путь/Ежедневно
6324/Мск - Рылеево/13:07/со всеми/Обычно 6 путь/Ежедневно
6722/Мск - Констант./13:13/со всеми/Обычно 7 путь/По выходным
6323/Рылеево - Мск/13:16/-/Обычно 6 путь/Ежедневно
738/Мск - Питер/13:31/-/Обычно 3 путь/Пн, ср, чт, сб
6721/Констант. - Мск/13:34/-/Обычно 7 путь/По выходным
6518/Мск - Троицк/13:43/со всеми кроме 106 км/Обычно 5 путь/Ежедневно
7505/Аэропорт - Мск/13:49/-/Обычно 2 путь/По выходным
6517/Троицк - Мск/13:52/-/Обычно 5 путь/Ежедневно
7508/Мск - Аэропорт/14:00/Остановки: Рылеево/Обычно 2 путь/По выходным
6326/Мск - Рылеево/14:05/со всеми/Обычно 6 путь/Ежедневно
6325/Рылеево - Мск/14:14/-/Обычно 6 путь/Ежедневно
6724/Мск - Констант./14:17/со всеми кроме Янино/Обычно 7 путь/По выходным
7314/Мск - Рылеево/14:35/Остановки: Орешкино/Обычно 1 путь/По выходным
6723/Констант. - Мск/14:38/-/Обычно 7 путь/По выходным
6422/Мск - Аэропорт/14:47/со всеми/Обычно 5 путь/Ежедневно
7507/Аэропорт - Мск/14:49/-/Обычно 2 путь/По выходным
7313/Рылеево - Мск/14:57/-/Обычно 1 путь/По выходным
6520/Мск - Троицк/14:59/со всеми кроме 106 км/Обычно 6 путь/Ежедневно
7510/Мск - Аэропорт/15:00/Остановки: Орешкино, Рылеево/Обычно 2 путь/Ежедневно
6421/Аэропорт - Мск/15:03/-/Обычно 5 путь/Ежедневно
6328/Мск - Рылеево/15:06/со всеми кроме Заводская/Обычно 7 путь/По выходным
6519/Троицк - Мск/15:09/-/Обычно 6 путь/Ежедневно
6327/Рылеево - Мск/15:15/-/Обычно 7 путь/По выходным
6726/Мск - Констант./15:18/со всеми/Обычно 5 путь/Ежедневно
726/Мск - Питер/15:30/-/Обычно 1 путь/Ежедневно
6725/Констант. - Мск/15:33/-/Обычно 5 путь/Ежедневно
6616/Мск - Вязево 2/15:36/со всеми кроме 106 км, Грибниково/Обычно 6 путь/Ежедневно
6424/Мск - Аэропорт/15:42/со всеми/Обычно 7 путь/По выходным
6330/Мск - Рылеево/15:48/со всеми/Обычно 5 путь/Ежедневно
6615/Вязево 2 - Мск/15:51/-/Обычно 6 путь/Ежедневно
7509/Аэропорт - Мск/15:52/-/Обычно 2 путь/Ежедневно
7554/Мск - Аэропорт/16:00/Остановки: Орешкино, Рылеево/Обычно 2 путь/Ежедневно
6423/Аэропорт - Мск/16:01/-/Обычно 7 путь/По выходным
6329/Рылеево - Мск/16:07/-/Обычно 5 путь/Ежедневно
242/Мск - Минск/16:10/-/Обычно 4 путь/По нечётным
6728/Мск - Констант./16:22/Остановки: Орешкино, Рылеево, далее везде/Обычно 1 путь/По_пятницам_и выходным
6332/Мск - Рылеево/16:28/со всеми/Обычно 6 путь/Ежедневно
6426/Мск - Аэропорт/16:34/со всеми кроме Заводская/Обычно 7 путь/Ежедневно
6331/Рылеево - Мск/16:37/-/Обычно 6 путь/Ежедневно
6727/Констант. - Мск/16:43/-/Обычно 1 путь/По выходным
6618/Мск - Вязево 2/16:46/со всеми кроме 106 км/Обычно 5 путь/Ежедневно
6617/Вязево 2 - Мск/16:49/-/Обычно 7 путь/Ежедневно
160/Мск - Петрозаводск/16:52/-/Обычно 3 путь/Ежедневно
7553/Аэропорт - Мск/16:52/-/Обычно 2 путь/Ежедневно
6521/Троицк - Мск/16:55/-/Обычно 5 путь/Ежедневно
6522/Мск - Троицк/16:58/со всеми кроме 106 км/Обычно 6 путь/Ежедневно
7556/Мск - Аэропорт/17:00/Остановки: Орешкино, Рылеево/Обычно 2 путь/Ежедневно
6730/Мск - Констант./17:02/со всеми Фанагорийская/Обычно 7 путь/По будням
6425/Аэропорт - Мск/17:05/-/Обычно 6 путь/Ежедневно
6334/Мск - Рылеево/17:08/со всеми/Обычно 5 путь/Ежедневно
6729/Констант. - Мск/17:17/-/Обычно 7 путь/По будням
7940/Мск - Констант./17:20/Остановки: Орешкино, Рылеево/Обычно 1 путь/Ежедневно
6333/Рылеево - Мск/17:23/-/Обычно 5 путь/Ежедневно
6428/Мск - Аэропорт/17:26/со всеми/Обычно 6 путь/Ежедневно
6620/Мск - Вязево 2/17:32/со всеми кроме 106 км, Греческий/Обычно 7 путь/По будням
6427/Аэропорт - Мск/17:35/-/Обычно 6 путь/Ежедневно
6732/Мск - Констант./17:38/со всеми/Обычно 5 путь/Ежедневно
7939/Констант. - Мск/17:41/-/Обычно 1 путь/Ежедневно
6619/Вязево 2 - Мск/17:47/-/Обычно 7 путь/По будням
6336/Мск - Рылеево/17:50/со всеми/Обычно 6 путь/Ежедневно
7555/Аэропорт - Мск/17:52/-/Обычно 2 путь/Ежедневно
6731/Констант. - Мск/17:59/-/Обычно 5 путь/Ежедневно
7560/Мск - Аэропорт/18:00/Остановки: Орешкино, Рылеево/Обычно 2 путь/Ежедневно
6524/Мск - Троицк/18:03/со всеми кроме 106 км/Обычно 7 путь/По будням
6335/Рылеево - Мск/18:06/-/Обычно 6 путь/Ежедневно
6734/Мск - Констант./18:09/со всеми/Обычно 5 путь/Ежедневно
6523/Троицк - Мск/18:12/-/Обычно 7 путь/По будням
6338/Мск - Рылеево/18:15/со всеми/Обычно 6 путь/Ежедневно
6733/Констант. - Мск/18:18/-/Обычно 5 путь/Ежедневно
6430/Мск - Аэропорт/18:21/со всеми/Обычно 7 путь/По будням
6337/Рылеево - Мск/18:24/-/Обычно 6 путь/Ежедневно
6622/Мск - Вязево 2/18:27/со всеми кроме 106 км/Обычно 5 путь/Ежедневно
6429/Аэропорт - Мск/18:30/-/Обычно 7 путь/По будням
7318/Мск - Рылеево/18:33/Остановки: Орешкино/Обычно 1 путь/По будням
6621/Вязево 2 - Мск/18:36/-/Обычно 5 путь/Ежедневно
6736/Мск - Констант./18:39/со всеми кроме Фанагорийская, Янино/Обычно 6 путь/Ежедневно
6340/Мск - Рылеево/18:45/со всеми кроме Заводская/Обычно 7 путь/По будням
6526/Мск - Троицк/18:51/со всеми кроме 106 км/Обычно 5 путь/Ежедневно
7559/Аэропорт - Мск/18:52/-/Обычно 2 путь/Ежедневно
7317/Рылеево - Мск/18:57/-/Обычно 1 путь/По будням
7564/Мск - Аэропорт/19:00/Остановки: Рылеево/Обычно 2 путь/Ежедневно
6735/Констант. - Мск/19:04/-/Обычно 6 путь/Ежедневно
7944/Мск - Констант./19:07/Остановки: Орешкино, Рылеево/Обычно 1 путь/Ежедневно
6339/Рылеево - Мск/19:10/-/Обычно 7 путь/По будням
6525/Троицк - Мск/19:16/-/Обычно 5 путь/Ежедневно
6432/Мск - Аэропорт/19:19/со всеми/Обычно 6 путь/Ежедневно
7943/Констант. - Мск/19:28/-/Обычно 1 путь/Ежедневно
6738/Мск - Констант./19:31/со всеми/Обычно 7 путь/По будням
6431/Аэропорт - Мск/19:40/-/Обычно 6 путь/Ежедневно
6342/Мск - Рылеево/19:43/со всеми/Обычно 5 путь/Ежедневно
6737/Констант. - Мск/19:46/-/Обычно 7 путь/По будням
7563/Аэропорт - Мск/19:50/-/Обычно 2 путь/Ежедневно
6528/Мск - Троицк/19:55/со всеми кроме 106 км/Обычно 6 путь/Ежедневно
6341/Рылеево - Мск/19:58/-/Обычно 5 путь/Ежедневно
7566/Мск - Аэропорт/20:00/Остановки: Рылеево/Обычно 2 путь/Ежедневно
737/Питер - Мск/20:05/-/Обычно 4 путь/Вт, пт, вс
6527/Троицк - Мск/20:08/-/Обычно 6 путь/Ежедневно
6624/Мск - Вязево 2/20:11/со всеми кроме 106 км/Обычно 7 путь/По будням
6740/Мск - Констант./20:17/со всеми/Обычно 5 путь/Ежедневно
6623/Вязево 2 - Мск/20:20/-/Обычно 7 путь/По будням
6434/Мск - Аэропорт/20:23/со всеми кроме Янино/Обычно 6 путь/Ежедневно
6739/Констант. - Мск/20:26/-/Обычно 5 путь/Ежедневно
6344/Мск - Рылеево/20:35/со всеми кроме Фанагорийская/Обычно 7 путь/По будням
6433/Аэропорт - Мск/20:38/-/Обычно 6 путь/Ежедневно
6530/Мск - Троицк/20:41/со всеми кроме 106 км/Обычно 5 путь/Ежедневно
6343/Рылеево - Мск/20:44/-/Обычно 7 путь/По будням
7565/Аэропорт - Мск/20:49/-/Обычно 2 путь/Ежедневно
6529/Троицк - Мск/20:50/-/Обычно 5 путь/Ежедневно
602/Мск - Рыбинск/20:53/-/Обычно 3 путь/Ежедневно
7948/Мск - Констант./21:00/Остановки: Рылеево/Обычно 1 путь/По будням
6742/Мск - Констант./21:12/со всеми кроме Заводская/Обычно 6 путь/Ежедневно
6346/Мск - Рылеево/21:24/со всеми/Обычно 7 путь/По будням
18/Мск - Петрозаводск/21:30/-/Обычно 4 путь/Ежедневно
6741/Констант. - Мск/21:33/-/Обычно 6 путь/Ежедневно
6345/Рылеево - Мск/21:39/-/Обычно 7 путь/По будням
7947/Констант. - Мск/21:45/-/Обычно 1 путь/По будням
6532/Мск - Троицк/21:48/со всеми кроме 106 км/Обычно 5 путь/Ежедневно
6531/Троицк - Мск/21:57/-/Обычно 5 путь/Ежедневно
725/Питер - Мск/22:00/-/Обычно 2 путь/Ежедневно
6626/Мск - Вязево 2/22:10/со всеми кроме 106 км/Обычно 6 путь/Ежедневно
6744/Мск - Констант./22:22/со всеми/Обычно 7 путь/По будням
6625/Вязево 2 - Мск/22:25/-/Обычно 7 путь/Ежедневно
6/Мск - Питер/22:40/-/Обычно 3 путь/Ежедневно
6743/Констант. - Мск/22:43/-/Обычно 5 путь/По будням
6348/Мск - Рылеево/22:46/со всеми/Обычно 5 путь/Ежедневно
6347/Рылеево - Мск/22:55/-/Обычно 5 путь/Ежедневно
38/Мск - Выборг/23:08/-/Обычно 4 путь/Ежедневно
604/Мск_Констант. - Мск_Фирмен./23:38/-/Обычно 3 путь/Ежедневно
6534/Мск - Троицк/23:50/со всеми кроме 106 км/Обычно 7 путь/Ежедневно
6533/Троицк - Мск/23:59/-/Обычно 6 путь/Ежедневно
▲ 0

На этот код страшно смотреть

Для форматирования текста лучше подойдут регулярные выражения Я очень долго изучал то, как ты преобразуешь строки, и всё же вывел паттерн.

К сожалению одной регуляркой это не сделать (потому что количество замечаний разное), поэтому вот простой скриптик:

data = ... # Твои строки
result = re.sub(r"(?P<time>\d+:\d+) (?P<type>[А-Яа-я]+) №(?P<index>\d*) (?P<from>[_А-Яа-я. 0-9]+) - (?P<to>[А-Яа-я. 0-9_]+) \((?P<path>[А-Яа-я.]+ \d+ \w+)\) (?P<times>(?:\([:А-Яа-я. ё,0-9]+\) ?)+)", "\g<index>/\g<from>-\g<to>/-/\g<time>/-/\g<times>/\g<path>", data)
result = result.replace(" (", "/").replace(") ", "").replace("(", "").replace(")", "");
print(result)

Если я что то сделал не так, пиши, исправлю

О нет, на мой код тоже страшно смотреть

▲ 0
# Imports.
from re import findall, UNICODE


# Regular expressions.
REGEX_ID = r'\b\d{1,4}\b'

REGEX_TIME = r'\b\d{1,2}:\d{2}\b'

REGEX_NAME = r'\b[А-Яа-я\s-]+\b'

REGEX_PATH = r'(\d+)\s*путь'

REGEX_BRACES = r'\(([^)]+)\)'

# Read content.
with open('test.txt', 'r', encoding='utf-8') as _content: content = _content.read().split('\n')

# Formatted lines.
formatted = ''

# Format lines.
for line in content:
    if line != '':
        _id = findall(REGEX_ID, line)[2]

        name = findall(REGEX_NAME, line, UNICODE)[1][1:]

        time = findall(REGEX_TIME, line)[0]

        path = findall(REGEX_BRACES, line)[0]

        coming = findall(REGEX_BRACES, line)[1 if len(findall(REGEX_BRACES, line)) == 2 else 2]

        mark = None if len(findall(REGEX_BRACES, line)) == 2 else findall(REGEX_BRACES, line)[1]

        newline = '\n' if line != content[-1] else ''

        formatted += f'{_id}/{name}/{time}/-/{path}/{"" if mark is None else mark + "/"}{coming}{newline}'

Теперь значение переменной formatted то что вы хотели:

6501/Троицк - Мск/0:45/-/Обычно 5 путь/По будням
152/Мск - Питер/0:55/-/Обычно 3 путь/По нечётным
6401/Аэропорт - Мск/0:57/-/Обычно 6 путь/Ежедневно
288/Мск - Питер/1:11/-/Обычно 4 путь/По праздникам
162/Мск - Питер/1:42/-/Обычно 3 путь/По чётным
и тд...

Пытался сделать как можно красивее и понятнее, если что пишите.