gpt4 book ai didi

python - 为什么 takewhile() 会跳过第一行?

转载 作者:行者123 更新时间:2023-11-28 20:27:52 25 4
gpt4 key购买 nike

我有这样一个文件:

1
2
3
TAB
1
2
3
TAB

我想以 block 的形式读取 TAB 之间的行。

import itertools

def block_generator(file):
with open(file) as lines:
for line in lines:
block = list(itertools.takewhile(lambda x: x.rstrip('\n') != '\t',
lines))
yield block

我想这样使用它:

blocks = block_generator(myfile)
for block in blocks:
do_something(block)

我得到的 block 都是从第二行开始的,比如 [2,3] [2,3],为什么?

最佳答案

这是使用 groupby 的另一种方法

from itertools import groupby
def block_generator(filename):
with open(filename) as lines:
for pred,block in groupby(lines, "\t\n".__ne__):
if pred:
yield block

关于python - 为什么 takewhile() 会跳过第一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7278327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com