可以使用itertools
配方pairwise
,就會產生電流,對每個迭代的下一行。你檢查第一個,併產生兩個。
對於文件
asd
hello
$INGGA
argh
fpp
$INGGA
cake
sausage
它將返回
$INGGA
argh
$INGGA
cake
所有加工做出來的RAM(文件讀取並處理逐行)並沒有程序上的變量(設定一次迭代中的標誌,下一次重置)。
from itertools import tee, izip
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return izip(a, b)
def ingga(nmeafile):
for line, nextline in pairwise(nmeafile):
if "$INGGA" in line:
yield line
yield nextline
with open("nmea") as nmeafile:
for i in ingga(nmeafile):
print i,
或者,如果你並不需要一個可重用的功能
with open("nmea") as nmeafile:
for line, nextline in pairwise(nmeafile):
if "$INGGA" in line:
print line,
print nextline,
旁邊的文件對象 –