Using enumerate to get line-numbers with itertools grouper?
tjreedy at udel.edu
Wed Sep 2 19:48:31 CEST 2015
On 9/2/2015 6:04 AM, Victor Hooi wrote:
> I'm using grouper() to iterate over a textfile in groups of lines:
> def grouper(iterable, n, fillvalue=None):
> "Collect data into fixed-length chunks or blocks"
> # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx
> args = [iter(iterable)] * n
> return zip_longest(fillvalue=fillvalue, *args)
> However, I'd also like to know the line-number that I'm up to, for printing out in informational or error messages.
> Is there a way to use enumerate with grouper to achieve this?
Without a runnable test example, it is hard to be sure what you want.
However, I believe replacing 'iter(iterable)' with 'enumerate(iterable,
1)', and taking into account that you will get (line_number, line)
tuples instead of lines, will do what you want.
Terry Jan Reedy
More information about the Python-list