Python 使用多个标识符进行解析

Python 使用多个标识符进行解析,python,parsing,generator,Python,Parsing,Generator,我试图从中实现这段代码,但我发现其中有两个bug似乎无法修复 Input: @m120204 CTCT + ~@@! @this_one_has_an_at_sign CTCTCT + @jfik9 @thisoneisempty + #empty line after + and then empty line to end file (2 empty lines) 这两个错误是: (i) 当有一个@在“+”行之后开始代码行时,例如第二个条目(@this_one_有一个_at_符号)

我试图从中实现这段代码,但我发现其中有两个bug似乎无法修复

Input:
@m120204
CTCT
+
~@@!
@this_one_has_an_at_sign
CTCTCT
+
@jfik9
@thisoneisempty

+


#empty line after + and then empty line to end file (2 empty lines)
这两个错误是: (i) 当有一个@在“+”行之后开始代码行时,例如第二个条目(@this_one_有一个_at_符号) (ii)当@identification_行后面的行或“+”行后面的行是空的,如第三个条目(@thisoneismpty)

我希望输出与我引用的帖子相同:

yield (name, body, extra)
在@this_one_有一个_at_符号的情况下

name= this_one_has_an_at_sign 
body= CTCTCT
quality= @jfik9
在@thisone的情况下是空的

name= thisoneisempty
body= ''
quality= ''
我尝试使用标志,但似乎无法解决此问题。我知道如何不用发电机,但我会使用大文件,所以我不想走这条路。我目前的代码是:

def organize(input_file):
    name = None
    body = ''
    extra = ''
    for line in input_file:
        line = line.strip()
        if line.startswith('@'):
            if name:
                body, extra = body.split('+',1)
                yield name, body, extra
                body = ''
            name = line
        else:
            body = body + line
    body, extra = body.split('+',1)
    yield name, body, extra

for line in organize(file_path):
    print line

这里的期望输出和实际输出是什么?我已经添加了输出。这与我提到的问题的格式相同,但我发现了上面提到的两个bug