Wyciąganie potrzebnych danych z pliku .txt.

Odpowiedz Nowy wątek
2019-02-12 00:24
0

Cześć!

Mam plik .txt z danymi, które należy oczyścić z niepotrzebnych rzeczy. Oto przykład ciągu danych:


// Sound\hgkghj\ghjhjg\fdgfg\dsddsg5.mp3
{
exampleexampleexampleexampleexampleexampleexampleexample
}

rubbishrubbishrubbishrubbishrubbishrubbishrubbishrubbishrubbishrubbish

{

}

// Sound\ewtetet\ghfjj\jjkhj\jjjhjkj.mp3
{
exampleexampleexampleexampleexampleexampleexample
}

rubbishrubbishrubbishrubbish

{

}

// Sound\dfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3
{
exampleexampleexampleexampleexampleexampleexample
}

rubbishrubbishrubbishrubbishrubbishrubbish

{

}


Dane które chcę wydobyć są pogrubione i mają być zapisane w jednym pliku .txt w takim schemacie:

// Sound\iiiiftug\dgfdg\fdfgdfg\kjkjhkjk.mp3
exampleexampleexampleexampleexampleexampleexample

// Sound\pppppppdfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3
exampleexampleexampleexampleexampleexampleexample

// Sound\mmmmmmmmmmmmdfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3
exampleexampleexampleexampleexampleexampleexample

// Sound\lllllllllllldfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3
exampleexampleexampleexampleexampleexampleexample

(czyli całość 1 i 3 wiersza każdego ciągu)

Za każdym razem linie graniczne pętli zaczynają się od // Sound ... i kończą się na }. Znak } pojawia się w części zbędnej, a // Sound za każdym razem oznacza start pętli.

Wiecie jak to rozwiązać? W razie jakiś wątpliwości z chęcią dookreślę szczegóły.

Pozdrawiam Paweł

P.S: Chodzi o zautomatyzowanie rozwiązania problemu, sposób czy język jest mniej istotny.

edytowany 4x, ostatnio: ŁF, 2019-02-12 15:12

Pozostało 580 znaków

2019-02-12 09:13
1

Najprostszy skrypt vbs:

filename = "C:\roboczy\plik.txt"
destfile = "c:\roboczy\wynik.txt"

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(filename)
set w = fso.CreateTextFile(destfile,true)
i=-100
Do Until f.AtEndOfStream
    l = f.ReadLine
    if left(l,2)="//" then
        i=1
        w.writeline l
    end if
    if i=3 then
        w.writeline l
    end if
    i=i+1
Loop

f.Close
w.close
Działa idealnie! Dziękuję :) - Paweł Soszyński 2019-02-12 16:15

Pozostało 580 znaków

2019-02-12 14:09

Najprostszy skrypt zgodny z POSIX:

#!/bin/sh
sed -n '\%^// Sound%{p;n;n;G;p}' "[email protected]"

Pozostało 580 znaków

2019-02-12 20:31
0

Kontynuując wątek, posiadam już plik .txt o takiej strukturze:

// Sound\iiiiftug\dgfdg\fdfgdfg\kjkjhkjk.mp3
exampleexampleexampleexampleexampleexampleexample

// Sound\pppppppdfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3
exampleexampleexampleexampleexampleexampleexample

// Sound\mmmmmmmmmmmmdfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3
exampleexampleexampleexampleexampleexampleexample

// Sound\lllllllllllldfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3
exampleexampleexampleexampleexampleexampleexample

oraz to samo w wersji bez oddzielającego pustego wiersza.

Podzieliłem go też na oddzielne pliki .txt nazwane "1","2","3","4" i tak dalej, aż do końca zbioru. Każdy z plików zawiera więc dwa wiersze tego typu :

// Sound\lllllllllllldfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3
exampleexampleexampleexampleexampleexampleexample

Celem przedsięwzięcia jest automatyczne umieszczanie wierszy drugich (example) do plików audio o podkreślonej nazwie np. Sound\lllllllllllldfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3 w postaci meta danych Tytuł. Ścieżki Sound\dsdf\dfsdf są już nieaktualne, ale nazwy plików pozostają takie same (oczywiście posiadam wszystkie te pliki audio).

Dla wyjaśnienia dodam, że pliki audio to nagrana mowa, a "example" to transkrypcja do nich.

Myślę, że należy zacząć od oczyszczenia nieaktualnej już ścieżki oraz dodania aktualnej. Być może, możliwe jest podanie samego katalogu w którym znajdują się wszystkie pliki audio (ich nazwy muszą pozostać niezmienne).

edytowany 8x, ostatnio: Paweł Soszyński, 2019-02-12 20:39

Pozostało 580 znaków

2019-02-12 21:36
0

No to kombinuj, naj prościej będzie znaleźć jakieś narzędzie np. https://squell.github.io/id3/
i wygenerować plik bat:

id3 -t "exampleexampleexampleexampleexampleexampleexample" Sound\lllllllllllldfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3

lub uruchamiać taki plik bezpośrednio z poziomu vbscriptu

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0