0
我想將文件解析爲令牌列表。每個標記至少包含一行,但可以包含更多。每個標記都與正則表達式匹配。如果輸入不是一個令牌序列(即沒有垃圾導致,中間或尾隨),我想要發出一個錯誤信號。我不關心內存消耗,因爲輸入文件相對較小。如何使用Python將文件標記爲一系列正則表達式?
在Perl中,我會使用類似(僞代碼):
$s = slurp_file();
while ($s ne '') {
if ($s =~ s/^\nsection (\d)\n\n/p) {
push (@r, ['SECTION ' . $1, ${^MATCH}]);
} elsif ($s =~ s/^some line\n/p) {
push (@r, ['SOME LINE', ${^MATCH}]);
[...]
} else {
die ("Found garbage: " . Dumper ($s));
}
}
我當然可以端口的這個1:1到Python,但有一個更Python的方式來做到這一點? (我做不要解析逐行再建一個手工製作的狀態機之上。)