Hur man analyserar textfiler med Perl

Parsning av textfiler är en av anledningarna till att Perl är ett fantastiskt verktyg för data mining och scripting.

Som ni ser nedan kan Perl användas för att i princip formatera en grupp text. Om du tittar ner på den första biten med text och sedan den sista delen längst ner på sidan kan du se att koden i mitten är det som förvandlar den första uppsättningen till den andra.

Hur man analyserar textfiler

Som ett exempel, låt oss bygga ett litet program som öppnar en flikavskiljd datafil och parsar kolumnerna till något vi kan använda.

Säg som exempel att din chef ger dig en fil med en lista med namn, e-postmeddelanden och telefonnummer och vill att du ska läsa filen och göra något med informationen, som att lägga den i en databas eller bara skriva ut den i en snyggt formaterad rapport.

Filens kolumner är separerade med TAB-tecknet och ser ut så här:

 Larry [email protected] 111-1111

 Curly [email protected] 222-2222

 Moe [email protected] 333-3333 

Här är den fullständiga listan vi kommer att arbeta med:

 #! / Usr / bin / perl

 

 öppen (FIL, 'data.txt');

 medan () 

 chomp;

 ($ namn, $ e-post, $ telefon) = split ("\ t");

 tryck "Namn: $ name \ n";

 tryck "E-post: $ e-post \ n";

 tryck "Telefon: $ telefon \ n";

 tryck "--------- \ n";

 

 stäng (FIL);

 utgång;


Notera: Detta drar viss kod från handledning om hur du läser och skriver filer i Perl.

Det den gör först är att öppna en fil som heter data.txt (som borde ligga i samma katalog som Perl-skriptet). Därefter läser den filen in i catchall-variabeln $ _ rad för rad. I detta fall är $ _ underförstådd och används inte i koden.

Efter att ha läst i en rad delas alla vita områden bort från slutet av det. Sedan används splitfunktionen för att bryta linjen på flikens karaktär. I det här fallet representeras fliken av koden \ t. Till vänster om delningens tecken ser du att jag tilldelar en grupp med tre olika variabler. Dessa representerar en för varje kolumn på raden.

Slutligen skrivs varje variabel som har delats upp från filens rad separat så att du kan se hur du får åtkomst till varje kolumns data individuellt.

Utgången från skriptet ska se ut så här:

 Namn: Larry

 E-post: [email protected]

 Telefon: 111-1111

 ---------

 Namn: Lockigt

 E-post: [email protected]

 Telefon: 222-2222

 ---------

 Namn: Moe

 E-post: [email protected]

 Telefon: 333-3333

 --------- 

Även om vi i det här exemplet bara skriver ut data, skulle det vara trivialt enkelt att lagra samma information som har analyserats från en TSV- eller CSV-fil i en fullständig databas.