我有一个解析文本文件行的循环:
for line in file:
if line.startswith('TK'):
for item in line.split():
if item.startwith('ID='):
*stuff*
if last_iteration_of_loop
*stuff*
Run Code Online (Sandbox Code Playgroud)
我需要做一些任务,但我不能这样做,直到第二个for循环的最后一次迭代.有没有办法检测到这一点,或者知道我是否在最后一项line.split()?作为一个注释,item第二个for循环中的s是字符串,我在运行时它们的内容是未知的,所以我不能寻找一个特定的字符串作为标志让我知道最后.
谢谢!
只需参考for循环外的最后一行:
for line in file:
if line.startswith('TK'):
item = None
for item in line.split():
if item.startwith('ID='):
# *stuff*
if item is not None:
# *stuff*
Run Code Online (Sandbox Code Playgroud)
该item变量仍然是可用的外部for循环:
>>> for i in range(5):
... print i
...
0
1
2
3
4
>>> print 'last:', i
last: 4
Run Code Online (Sandbox Code Playgroud)
请注意,如果您的文件为空(不会在循环中进行迭代),item则不会设置; 这就是为什么我们item = None在循环之前设置并测试if item is not None之后的原因.
如果您必须拥有与测试匹配的最后一项,请将其存储在新变量中:
for line in file:
if line.startswith('TK'):
lastitem = None
for item in line.split():
if item.startwith('ID='):
lastitem = item
# *stuff*
if lastitem is not None:
# *stuff*
Run Code Online (Sandbox Code Playgroud)
演示第二种选择:
>>> lasti = None
>>> for i in range(5):
... if i % 2 == 0:
... lasti = i
...
>>> lasti
4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2063 次 |
| 最近记录: |