Hoe tekstbestanden te parseren met Perl

Het parseren van tekstbestanden is een van de redenen waarom Perl een geweldig hulpmiddel voor datamining en -scripting is.

Zoals u hieronder zult zien, kan Perl worden gebruikt om in principe een groep tekst opnieuw te formatteren. Als je naar het eerste stuk tekst kijkt en vervolgens naar het laatste deel onderaan de pagina, kun je zien dat de code in het midden de eerste reeks transformeert in de tweede.

Hoe tekstbestanden te ontleden

Laten we als voorbeeld een klein programma bouwen dat een door tabs gescheiden gegevensbestand opent en de kolommen parseert in iets dat we kunnen gebruiken.

Stel bijvoorbeeld dat je baas je een bestand overhandigt met een lijst met namen, e-mails en telefoonnummers, en wil dat je het bestand leest en iets met de informatie doet, zoals het in een database plaatsen of gewoon afdrukken in een mooi opgemaakt rapport.

De kolommen van het bestand worden gescheiden door het TAB-teken en zien er ongeveer zo uit:

 Larry [email protected] 111-1111

 Curly [email protected] 222-2222

 Moe [email protected] 333-3333 

Hier is de volledige lijst waarmee we zullen werken:

 #! / Usr / bin / perl

 

 open (BESTAND, 'data.txt');

 while () 

 chomp;

 ($ name, $ email, $ phone) = split ("\ t");

 print "Naam: $ naam \ n";

 print "Email: $ email \ n";

 print "Telefoon: $ telefoon \ n";

 print "--------- \ n";

 

 sluiten (BESTAND);

 Uitgang;


Notitie: Dit haalt wat code uit de tutorial over het lezen en schrijven van bestanden in Perl.

Wat het eerst doet, is een bestand met de naam data.txt openen (dat zich in dezelfde map moet bevinden als het Perl-script). Vervolgens wordt het bestand regel voor regel in de catchall-variabele $ _ gelezen. In dit geval is de $ _ impliciete en niet echt gebruikt in de code.

Na het lezen in een regel, wordt elke witruimte afgebroken van het einde ervan. Vervolgens wordt de splitfunctie gebruikt om de lijn op het tabteken te breken. In dit geval wordt het tabblad vertegenwoordigd door de code \ t. Links van het splitsteken zie je dat ik een groep van drie verschillende variabelen toewijs. Deze vertegenwoordigen één voor elke kolom van de regel.

Ten slotte wordt elke variabele die is gesplitst van de bestandsregel afzonderlijk afgedrukt, zodat u kunt zien hoe u de gegevens van elke kolom afzonderlijk kunt openen.

De output van het script zou er ongeveer zo uit moeten zien:

 Naam: Larry

 E-mail: [email protected]

 Telefoon: 111-1111

 ---------

 Naam: Curly

 E-mail: [email protected]

 Telefoon: 222-2222

 ---------

 Naam: Moe

 E-mail: [email protected]

 Telefoon: 333-3333

 --------- 

Hoewel we in dit voorbeeld alleen de gegevens afdrukken, zou het triviaal eenvoudig zijn om diezelfde informatie uit een TSV- of CSV-bestand op te slaan in een volwaardige database.