Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 2 odgovora
  • 3.982 pregleda

Najnovija ↓

Traženje unicode karaktera unutar stringa 06.05.2006. u 10:03 · pre 249 meseci #1
Potrebno mi je da iz jednog fajla cca. 100.000 redova, da izvučem samo one redove koji sadrže npr. Geschäftsleitung i da ih upišem u neki drugi fajl. E sad lako je kad se traže slova iz engleskog alfabeta, al šta da radim sa tim specifičnim karakterima iz nemačkog jezika? Pošto sve kucam u notepad-u, snimio sam fajl kao unicode i ne pomaže.
Zahvaljujem se na pomoći.
Potpis
77 77 77 2E 65 73 6E 69 70 73 2E 63 6F 6D
Re: Traženje unicode karaktera unutar stringa 06.05.2006. u 13:03 · pre 249 meseci
izmenjeno 1 put, poslednji put Časlav Ilić 06.05.2006. u 13:05
  1. Časlav Ilić06.05.2006. u 13:05zapis iz teksta poruke
#2
Da bi razumeo Unikod koji dolazi spolja, Perl treba pokrenuti sa opcijom -C. Da bi razumeo Unikod u sopstvenom kodu, treba zadati use utf8; na početku izvorne datoteke.

Takođe, nije dovoljno sačuvati izvornu datoteku u bilo kom unikodskom zapisu, već mora biti UTF-8. Majkrosoftovi programi, pa tako i Notepad, podrazumevaju UCS-2 zapis unikodskih tekstova, tako da vidi možeš li da izabereš UTF-8. Ako ne, nađi neki drugi uređivač teksta. U stvari, u svakom slučaju nađi neki drugi uređivač :)
Re: Traženje unicode karaktera unutar stringa 21.06.2006. u 19:17 · pre 247 meseci #3
Citat:
Pharos: Potrebno mi je da iz jednog fajla cca. 100.000 redova, da izvučem samo one redove koji sadrže npr. Geschäftsleitung i da ih upišem u neki drugi fajl. E sad lako je kad se traže slova iz engleskog alfabeta, al šta da radim sa tim specifičnim karakterima iz nemačkog jezika? Pošto sve kucam u notepad-u, snimio sam fajl kao unicode i ne pomaže.
Zahvaljujem se na pomoći.


Evo, na brzinu sam napisao skriptić koji to radi:


Code:

#!/usr/bin/perl
use utf8;

open (INF, "fajl");
binmode (INF, ':utf8');
my @buffer = <INF>;
close (INF);

binmode (STDOUT, ":utf8");
foreach $l (@buffer) {
    if ($l =~ /[^a-zA-Z.,!?\n\s]/) {
        print $l;
    }
}


U suštini, bitno je da učitaš fajl kao utf 8 (zato je binmode (INF, ':utf8')). Posle toga uradiš regex
/[^a-zA-Z.,!?\n\s]/

što u prevodu znači: ako niz ne sadrži nešto od: sva mala slova (a-z), sva velika slova (A-Z), tačku, zarez, uzvičnik, upitnik, novi red ili razmak. Recimo, ä je takvo slovo :)

Ovo što je Časlav rekao isto ima smisla.

Nadam se da sam dobro razumeo šta ti je potrebno...

Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme