-2

我有一个数据文本文件。它看起来像这样,但有几百行。

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”行,然后将下一行添加到列表中?

4

2 回答 2

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
于 2013-02-08T20:22:14.413 回答
0

也许看看 .split 函数?http://docs.python.org/2/library/stdtypes.html#str.split

或正则表达式模块:http ://docs.python.org/2/library/re.html

于 2013-02-08T20:19:20.613 回答