当我使用下面的结构循环文件时,我也想要当前的行号。
with codecs.open(filename, 'rb', 'utf8' ) as f:
retval = []
for line in f:
process(line)
是否存在类似于此的东西?
for line, lineno in f:
答案 0 :(得分:10)
for lineno, line in enumerate(f, start=1):
如果您遇到的Python版本不允许您设置enumerate
的起始编号(此功能已在Python 2.6中添加),并且您希望使用此功能,那么最佳解决方案可能是提供一个实现,而不是调整内置函数返回的索引。这是一个实现。
def enumerate(iterable, start=0):
for item in iterable:
yield start, item
start += 1
答案 1 :(得分:1)
如果您使用的是Python2.6 +,那么kindall的答案将涵盖它
Python2.5及更早版本不支持enumertate的第二个参数,所以你需要使用这样的东西
for i, line in enumerate(f):
lineno = i+1
或
for lineno, line in ((i+1,j) for i,j in enumerate(f)):
除非您确定第一行是数字0