<p>我知道最好用这种形式来解释如何做这样的事情的一般准则,但是对于这样一个简单的任务,代码本身就说明了问题,真的。。。在</p>
<p>我会这样做的。在</p>
<pre><code>from pprint import pprint # For nicer formatting of the output.
# For the sake of a self-contained example,
# the data is inlined here.
#
# `f` could be replaced with `open('log.txt').
f = """
firstname1
surname1
email@email.com1
student1
-
firstname2
surname2
email@email.com2
student2
-
""".splitlines()
data = []
current = None
for line in f:
line = line.strip() # Remove leading and trailing spaces
if not line: # Ignore empty lines
continue # Skip the rest of this iteration.
if line.startswith(' -'): # New record.
current = None # Clear the `current` variable
continue # Skip the rest of the iteration
if current is None: # No current entry?
# This can happen either after a - line, or
# when we're dealing with the very first line of the file.
current = [] # Create an empty list,
data.append(current) # and push it to the list of data.
current.append(line)
pprint(data)
</code></pre>
<p>输出是列表列表:</p>
^{pr2}$