Zrušit konce řádků ale ne odstavce

Lukáš

Zrušit konce řádků ale ne odstavce
« kdy: 10. 07. 2012, 20:15:26 »
Zdravím, mám takový problém: Mám textový soubor, který je blbě udělaný. Každý řádek má po určitém počtu znaků tvrdý řádkový zlom. Potřebuji tyto ruční zlomy zrušit, ale zároveň potřebuji zachovat odstavce. Ty začínají tradičně dvěma mezerami na začátku řádky.

Zadání tedy je: smaž konce řádků, ale ne v místech, kdy další řádek začíná dvěma mezerami.

Dá se to nějak jednoduše udělat? Řeším to u několika e-knih, které jsou takhle špatně naskenované a nedá se s nimi pak rozumně pracovat. Díky


pepak

Re:Zrušit konce řádků ale ne odstavce
« Odpověď #1 kdy: 10. 07. 2012, 20:27:09 »

Re:Zrušit konce řádků ale ne odstavce
« Odpověď #2 kdy: 10. 07. 2012, 21:08:07 »
Se sedem se mi nechce párat :)

Kód: [Vybrat]
python -c 'import sys,re; print re.sub("\n(?!  )"," ",sys.stdin.read(),0,re.MULTILINE)' < file

Za vykřičníkem jsou ty dvě mezery.

wamba

Re:Zrušit konce řádků ale ne odstavce
« Odpověď #3 kdy: 10. 07. 2012, 23:27:48 »
v perlu třeba takhle
Kód: [Vybrat]
perl -00 -nE 'tr/\n/ /;say ' soubor.txt

Re:Zrušit konce řádků ale ne odstavce
« Odpověď #4 kdy: 11. 07. 2012, 00:00:26 »
v perlu třeba takhle
Kód: [Vybrat]
perl -00 -nE 'tr/\n/ /;say ' soubor.txt
A kde jsou tam ty dvě mezery?


wamba

Re:Zrušit konce řádků ale ne odstavce
« Odpověď #5 kdy: 11. 07. 2012, 01:15:17 »
Citace
A kde jsou tam ty dvě mezery?

 blbě jsem četl

(to je tak, kdy se neuvede příklad a ja čtu jen na půl)

ta třeba mě napadá
Kód: [Vybrat]
perl -00 -pE 's/\n(?!  )//g' souborcož asi bude ekvivalent toho řešení v pythonu

popř.
Kód: [Vybrat]
perl -00 -pE 's/(\n  )|\n/$1/g' soubor
nebo i
Kód: [Vybrat]
perl -00 -pE 's/\n//g;s/  /\n  /g' souborcož není úplně podle zadání, ale i tak by to mohlo postačovat