Parsing af tekstfiler med Perl

Parring af tekstfiler er en af ​​grundene til, at Perl er et fantastisk værktøj til data mining og scripting.

Som du ser nedenfor, kan Perl bruges til dybest set at omformatere en gruppe tekst. Hvis du ser ned på det første stykke tekst og derefter den sidste del nederst på siden, kan du se, at koden i midten er det, der omdanner det første sæt til det andet.

Sådan analyseres tekstfiler

Lad os som et eksempel bygge et lille program, der åbner en fanefordelt datafil, og analyserer kolonnerne i noget, vi kan bruge.

Sig som et eksempel, at din chef giver dig en fil med en liste over navne, e-mails og telefonnumre og vil have dig til at læse filen og gør noget med oplysningerne, som at lægge den i en database eller bare udskrive den i et pænt formateret rapport.

Filens kolonner er adskilt med TAB-tegnet og ser sådan ud:

 Larry [email protected] 111-1111

 Curly [email protected] 222-2222

 Moe [email protected] 333-3333 

Her er den fulde liste, vi arbejder med:

 #! / Usr / bin / perl


 åben (FIL, 'data.txt');
instagram viewer

 mens () {

 chomp;

 ($ navn, $ e-mail, $ telefon) = split ("\ t");

 udskriv "Navn: $ navn \ n";

 udskriv "E-mail: $ e-mail \ n";

 udskriv "Telefon: $ telefon \ n";

 udskriv "\ n";

 }

 tæt (FIL);

 Afslut;


Bemærk: Dette trækker nogle kode fra tutorial på hvordan man læser og skriver filer i Perl.

Hvad det gør først er åben a fil kaldet data.txt (der skulle være i det samme bibliotek som Perl-scriptet). Derefter læser den filen ind i catchall-variablen $ _ linje for linje. I dette tilfælde er $ _ underforstået og faktisk ikke brugt i koden.

Efter at have læst i en linje, er ethvert hvidrum chomped fra slutningen af ​​det. Derefter bruges split-funktionen til at bryde linjen på fanebladets tegn. I dette tilfælde er fanen repræsenteret af koden \ t. Til venstre for splitets tegn vil du se, at jeg tildeler en gruppe på tre forskellige variabler. Disse repræsenterer en for hver kolonne på linjen.

Endelig udskrives hver variabel, der er delt fra filens linje separat, så du kan se, hvordan du får adgang til hver søjles data individuelt.

Outputet af scriptet skal se sådan ud:

 Navn: Larry

 E-mail: [email protected]

 Telefon: 111-1111


 Navn: Krøllet

 E-mail: [email protected]

 Telefon: 222-2222


 Navn: Moe

 E-mail: [email protected]

 Telefon: 333-3333


Selvom vi i dette eksempel bare udskriver dataene, ville det være trivielt let at gemme de samme oplysninger, der blev analyseret fra en TSV- eller CSV-fil, i en fuld database.