Stránka 1 z 1

Jak vymazat část textu v jiném jazyce ze souboru?

Napsal: 01 lis 2021 23:10
od bluenite
Potřebuji upravit jeden titulkový soubor (původně *.ass), který je dvojjazyčný – EN+Korejština, viz screen.
Ten druhý bych potřeboval dát pryč. Existuje na to nějaký automatizovaný postup, místo ručního mazání? Program, nebo něco jiného třeba?
Díky za radu
Petr

Re: Jak vymazat část textu v jiném jazyce ze souboru?

Napsal: 02 lis 2021 09:56
od zeus
Pochybuji, kdyz je ten caj takhle nepravidelne rozsypany.
Jo, kdyby stacilo mazat kazdy paty radek...

Re: Jak vymazat část textu v jiném jazyce ze souboru?

Napsal: 02 lis 2021 15:11
od Serg01
Jestli je korejská verze (i když tohle spíš vypadá jako kanji, korejština má jiné písmo, ne?) vždy pod časem ve videu, tak by stačil Notepad++, funkce vyhledat a nahradit (Ctrl + H), a regulérní výraz, např.:

Find what:

Kód: Vybrat vše

(\d+\r\n\d{2}:\d{2}:\d{2},\d{3} --> \d{2}:\d{2}:\d{2},\d{3}\r\n)(.+)\r\n

Replace with:

Kód: Vybrat vše

$1

je potřeba vybrat "Search mode" jako "Regular expression", a nezaškrtávat ". matches newline" hned vedle toho, jen nevím jak to bude přeložené v české verzi Notepadu++

Odstraní každý řádek, který následuje po:

Kód: Vybrat vše

# (jakýkoliv počet cifer až do konce řádku)
##:##:##,### --> ##:##:##,###
(tento řádek bude odstraněn)
následující řádek zůstane

kde # představuje jakoukoliv číslici

Snad tam nejsou na konci řádků žádné mezery, jinak by to tenhle regulerní výraz nenašel
A místo \r\n možná bude stačit jen \n (záleží jestli ten soubor byl vytvořený ve windowsu nebo v linuxu)

Btw, kdyby jsi to opravdu chtěl zkusit, tak doporučuji nejdřív vytvořit kopii, a hrát si s tou kopií :D

Re: Jak vymazat část textu v jiném jazyce ze souboru?

Napsal: 02 lis 2021 17:43
od bluenite
jojo mýlka, není to korea ale čína...
Každopádně by to snad fungovalo, ale právě tady není pravidelnost vymazání každěho x řádku. Někde je řádek pouze en...
viz dva soubory v příloze - originál ass před konverzí a pak ten konvertovaný srt, který se blíží více mému použití.
Zbývá ruční mazání, což mě přivedlo k původnímu dotazu.

Re: Jak vymazat část textu v jiném jazyce ze souboru?

Napsal: 02 lis 2021 20:59
od Serg01
Here.

Šlo to celkem jednoduše tímto regexpem (zdroj zde):

Kód: Vybrat vše

\n.+[^\x00-\x7F].+\n -> non-ASCII znak kdekoliv na řádku, ale minimálně 3 znaky

Ten našel a odstranil každý řádek, který obsahoval "non-ASCII" znak.
Ale musely tam být minimálně 3 znaky, jelikož některé řádky měly jen jedno nebo dva čínské znaky, tak to bylo potřeba projet celý ještě jednou těmito regexpy:

Kód: Vybrat vše

\n[^\x00-\x7F].+\n -> non-ASCII znak na začátku řádku

Kód: Vybrat vše

\n.+[^\x00-\x7F]\n -> non-ASCII znak na konci řádku

Ale teď mě napadá, že možná stačilo místo kvantifikátoru plusu (minimálně jeden odpovídající znak) použít u tečky (jakýkoliv znak) jako kvantifikátor hvězdičku (0 až neomezeně odpovídajících znaků)

Kód: Vybrat vše

\n.*[^\x00-\x7F].*\n

A nemusel bych to nechat prohledávat 3x :D
Ty tečky tam jsou proto, že občas byly na řádku nejen všechno čínské znaky, ale například čísla, která už jsou ASCII znaky.

Každopádně teď tam vznikly občas časy, pro které není žádný text, nevím co to udělá v přehrávači.
Například:
9
00:00:31,920 --> 00:00:34,520
and its most spectacular.

10
00:00:58,030 --> 00:01:04,330

11
00:01:07,330 --> 00:01:10,330

12
00:01:35,230 --> 00:01:39,260
Day 1, filming in Idaho's Pioneer Mountains,

Šlo by to takové výskyty najít a odstranit dalším regexpem, ale pak se rozbije číslování (po 9 bude najednou 12).
A tím se už fakt dostáváme k původnímu dotazu - nějký program který by opravil i číslování :D

Re: Jak vymazat část textu v jiném jazyce ze souboru?  Vyřešeno

Napsal: 03 lis 2021 22:20
od bluenite
dobrá duše mi poslala verzi en titulkú bez tohoto mixu, takže problémek vyřešen.
díky moc za všechny reakce
serg01 zvlášť, za ty 'non-ASCII znak' to je to co lze použít nejspíš i pro jiné případy. šikovná hlava.