我经常需要在第一行处理包含标题的大文本文件.标题通常与文件正文的处理方式不同,或者我对正文的处理依赖于标题.无论哪种方式,我需要将第一行视为特殊情况.我可以使用简单的行迭代并设置一个标志:
headerProcessed = false
for line in f:
if headerProcessed:
processBody(line)
else:
processHeader(line)
headerProcessed = true
Run Code Online (Sandbox Code Playgroud)
但我不喜欢循环中的测试,除了执行数百万次之外,所有测试都是多余的.有没有更好的办法?我可以区别对待第一行,然后在第二行开始迭代吗?我应该被打扰吗?
Gre*_*ill 16
你可以:
processHeader(f.readline())
for line in f:
processBody(line)
Run Code Online (Sandbox Code Playgroud)
f = file("test")
processHeader(f.next()) #or next(f) for py3
for line in f:
processBody(line)
Run Code Online (Sandbox Code Playgroud)
这有效.
编辑:
改.__next__
到next
(他们是等价的,但我想下一个更简洁).
回归file
vs open
,file
对我来说似乎更清楚,因此我会继续喜欢它open
.
归档时间: |
|
查看次数: |
2068 次 |
最近记录: |