擅长:python、mysql、java
<p>对我来说,解决这个问题最直接的方法就是使用发电机。在</p>
<pre><code>def tokens(filename):
with open(filename) as infile:
for line in infile:
for item in line.split():
yield int(item)
def ballots(tokens):
ballot = []
for t in tokens:
if t:
ballot.append(t)
else:
yield ballot
ballot = []
t = tokens("datafile.txt")
for b in ballots(t):
print b
</code></pre>
<p>我看到@katrielex在我发布我的解决方案时发布了一个生成器。我们的不同之处在于我使用了两个独立的生成器,一个用于文件中的单个标记,另一个用于您希望解析的特定数据结构。前者作为参数传递给后者,其基本思想是您可以为要解析的每个数据结构编写一个类似<code>ballots()</code>的函数。您可以迭代生成器生成的所有内容,也可以在任一生成器上调用<code>next()</code>以获得下一个令牌或选票(准备好在用完时出现<code>StopIteration</code>异常,或者编写生成器在实际数据用完时生成一个sentinel值,如<code>None</code>,并进行检查)。在</p>
<p>在一个类中包装整个东西是非常简单的。事实上。。。在</p>
^{pr2}$