这是我到目前为止的代码:
我从同一类调用生成器函数
g = self.gen(infile)
我想迭代g
for line in infile:
...
numb, c1, winner, c2, scorerTimes = next(g)
但是经过一些调试之后,我发现g只能被迭代一次
这是我的生成器函数
def gen(self, infile):
values = []
winner = ""
line = infile.readline()
while not(line.startswith("(")):
line = infile.readline()
while True:
m = re.search("(\d+)\)\s\w+\s\w+/+\d+\s+\d+:\d+\s+(\w+)\s+(\d+)-(\d+).[^)]+\)\s+(\w+)", line)
line = infile.readline()
n = re.findall("(\w\s*\w+)\s(\d+)", line)
if int(m.group(3)) > int(m.group(4)):
winner = m.group(2)
else:
winner = m.group(5)
yield m.group(1), m.group(2), winner, m.group(5), n
我编写的生成器函数错误吗?这是我第一次使用发电机,所以有些困惑。