我有一个数据文本文件。它看起来像这样,但有几百行。
Test: 0
AssignentDone
UserDone
johndoe
Assignment8
Resp: YES
Trade: YES
Journal: YES
我需要构建一个用户名列表。每个人下的数据都是杂乱无章的,但在每个人的数据末尾是“UserDone”行,然后下一行是新用户的名称。
我有这个
def get_names( file ):
with open("userdata.txt", "rt") as file:
for line in file:
if "UserDone" in line:
students= list(file.readlines()[1])`
当我跑步时,我得到了
ValueError: Mixing iteration and read methods would lose data
有什么方法可以让python识别“UserDone”行,然后将下一行添加到列表中?
答案 0 :(得分:1)
你不能使用文件迭代和readline,或者你弄得一团糟,而python很想让你知道。尝试类似下面的内容(我确信它可以以更智能的方式完成)
def get_names( file ):
savenext = False
with open("userdata.txt", "rt") as file:
for line in file:
if savenext == True:
students= line
savenext == False
if "UserDone" in line:
savenext = True
答案 1 :(得分:0)
也许看看.split功能? http://docs.python.org/2/library/stdtypes.html#str.split