Как мне извлечь определенные слова из каждой строки? - PullRequest
0 голосов
/ 18 июня 2020

В текстовом файле много таких строк, я хочу извлечь слова после / videos до .mp4 и самого последнего числа (выделено жирным шрифтом) и вывести каждое отфильтрованная строка в отдельном файле

https://videos-a.jwpsrv.com/content/conversions/7kHOkkQa/videos/**S4KWZTyt-32313922.mp4**.m3u8?hdnts=exp=1592315851~acl=*/S4KWZTyt-32313922.mp4.m3u8~hmac=83f4674e6bf2576b070c716a3196cb6a30f35737827ee69c8cf7e0c57a196e51 **1** 

Допустим, например, содержимое текстового файла ...

https://videos-a.jwpsrv.com/content/conversions/7kHOkkQa/videos/JajSfbVN-32313922.mp4.m3u8?hdnts=exp=1592315891~acl=*/JajSfbVN-32313922.mp4.m3u8~hmac=d3ca7bd5b233a531cfe242d17d2ea0c0167b41b90fff6459e433700ffc969d69 19

https://videos-a.jwpsrv.com/content/conversions/7kHOkkQa/videos/Qs3xZqcv-32313922.mp4.m3u8?hdnts=exp=1592315940~acl=*/Qs3xZqcv-32313922.mp4.m3u8~hmac=c30e2082bf748a6b4d1621c1d33a95319baa61798775e9da8856041951cf5233 20

Результат должен быть

JajSfbVN-32313922.mp4 19
Qs3xZqcv-32313922.mp4 20

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Предлагаемое регулярное выражение, вероятно, является лучшим решением, но я оставлю решение Python, которое записывает каждую отфильтрованную строку в отдельный файл. Этот сценарий работает, если каждая строка в файле такая.

with open("my_file.txt","r") as FILE:
    lines=FILE.readlines()
    for line in lines:
        num=line.split(" ")[1]
        newline=line.split("videos")[2]
        newline=newline[1:]
        new=newline.split(".")[0:2]
        with open(new[0],"w") as f:
            f.write(new[0]+"."+new[1]+" "+num.strip())
            f.close
1 голос
/ 18 июня 2020

Вы можете попробовать следующее регулярное выражение:

.*\/videos\/(.*?mp4).*?(?<= )(\d+)

Объяснение приведенного выше регулярного выражения:

.* - Сопоставление всего до \videos.

\/videos\/ - буквальное сопоставление видео.

(.*?mp4) - представляет группу захвата, которая лениво сопоставляет все перед mp4.

.*? - Жадно сопоставляет все, что до появления цифр.

(\d+) - Представляет вторую группу захвата сопоставление чисел в конце по вашему усмотрению.

Вы можете найти демонстрацию вышеуказанного регулярного выражения в здесь.

Pictorial representation

Command line implementation in linux:

cat regea.txt | perl -ne 'print "$1 $2\n" while /.*\/videos\/(.*?mp4).*?(?<= )(\d+)/g;'> out.txt

You can find the sample implementation of the above command in здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...