W Pythonie wykonaj następujące czynności, aby przetworzyć plik linia po linii:
with open(infile) as f:
for line in f:
process(line)
Próbując sprawdzić, jak zrobić to samo w elisp (z buforami zamiast plików), nie znalazłem oczywistego sposobu.
(Chciałbym skończyć z dwiema uporządkowanymi strukturami danych linii, jedną ze wszystkimi liniami pasującymi do wyrażenia regularnego, drugą zawierającą te, które nie pasują.)
(let ((start (point))) (goto-char (point-max)) (while (> (point) start) ... (forward-line -1)))
?start
iend
są istniejące zmienne, które ograniczają obszar, na którym chcemy pracować.Nie znam żadnego idiomatycznego sposobu, ale wpadłem na to:
źródło
Myślę, że następujące jest tak idiomatyczne, jak to tylko możliwe:
EDYCJA: Oto inne rozwiązanie
loop
zamiastdolist
, i które również klasyfikuje linie według tego, czy pasują one do wyrażenia regularnego:Jeśli ustawisz zmienną na wyjściu tej funkcji, powiedzmy
(setq x (loop ...))
, wtedy żądana lista pasujących linii zostanie znaleziona w(car x)
, z listą niepasujących linii(cdr x)
.źródło