如何使用Perl解析文本文件
解析文本文件是Perl制作出色的數(shù)據(jù)挖掘和腳本編寫(xiě)工具的原因之一。
正如你所說(shuō),Perl可以用來(lái)基本上重新格式化一組文本。如果您查看第一塊文本,然后查看頁(yè)面底部的最后一部分,可以看到中間的代碼是將第一組轉(zhuǎn)換為第二組的內(nèi)容。
如何解析文本文件
例如,讓's構(gòu)建一個(gè)小程序,打開(kāi)一個(gè)制表符分隔的數(shù)據(jù)文件,并將這些列解析為我們可以使用的東西。
比如說(shuō),你的老板給你一個(gè)帶有姓名,電子郵件和電話號(hào)碼列表的文件,并希望你閱讀該文件并處理這些信息,比如把它放入數(shù)據(jù)庫(kù)或只是打印出來(lái)在一個(gè)格式良好的報(bào)告中。
文件's列用制表符字符分隔,看起來(lái)像這樣:
拉里larry@example.com111-1111
卷曲curly@example.com222-2222
Moemoe@example.com333-3333
這里's我們的完整列表'將使用:
#!/usr/bin/perl
打開(kāi)(文件,'data.txt';;;;
而(&&&chomp;($name,$電子郵件,$手機(jī));;;;;;;;;;;
打印&\\\#);;;;;;;;;;;;;;;;;;;
;;;;;;
($($name,$$$$電子郵件,$##34;電話:$電話\ n";打印"---------\n";}關(guān)閉(文件);退出;注意:這從關(guān)于如何科目三安全文明駕駛常識(shí)考試在Perl中讀取和寫(xiě)入文件的教程中提取了一些代碼。
它首先做的是打開(kāi)一個(gè)名為data.txt(應(yīng)該與Perl腳本位于同一目錄中)。然后,它逐行讀取文件到catchall變量$_u中。在這種情況下,$是隱含的并沒(méi)有在代碼中實(shí)際使用。
在一行閱讀之后,任何白人空間都被從它的末尾洗掉。然后,拆分功能用于打破制表符字符上的行。在這種情況下,選項(xiàng)卡由代碼\ t表示。在split's符號(hào)的左側(cè),您'將看到I'm分配一組三個(gè)不同的變量。這些代表了每一行的一個(gè)。
最后,分別打印從文件's行拆分的每個(gè)變量,以便您可以看到如何單獨(dú)訪問(wèn)每列's數(shù)據(jù)。
腳本的輸出應(yīng)該看起來(lái)像這樣:
姓名:Larry電子郵件:larry@example.com電話:111-1111---------------姓名:Curly電子郵件:curly@example.com電話:222-2222---------------姓名:Moe電子郵件:moe@example.com電話:333-3333-----雖然在這個(gè)例子中我們'只需打印數(shù)據(jù),但在一個(gè)完整的數(shù)據(jù)庫(kù)中存儲(chǔ)從TSV或CSV文件解析的相同信息是非常容易的。