O gerador não está trabalhando para dividir a string por identificador específico. Python 2

Até agora, encontrei uma maneira de fornecer o nome, a sequência e a sequência extra. Funciona para o segundo, mas não funciona para o primeiro? é tão estranho porque os formatos são realmente semelhantes. é porque é várias linhas? eu pensei que oif line == '+': pass contornaria o problema.

eu adicionei na impressão '\ n' para mostrar a diferença

Entrada:

@first_name
AlongStringOfText
ThatHasNoSpaces
ButIsSeparatedByLineBreaks
+
{+iuhsfIUHSDFUi8849308989829
0990+-]@@@#*$()(@*$*)))***)@@**@#*u
sdfiuhnknwuiewi
+
@second_name
MoreTextThatCouldBeOnOneLine
+
+{~~~(@#UhuisdfiuhIUHDSFIUFHIl)}9823)88hafff
#empty line at end

Script atual:

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

    yield name,body,extra

for line in organize(file_path):
    print line

Resultado:

('@first_name', 'AlongStringOfTextThatHasNoSpacesButIsSeparatedByLineBreaks+{+iuhsfIUHSDFUi88493089898290990+-]@@@#*$()(@*$*)))***)@@**@#*usdfiuhnknwuiewi+', '')


('@second_name', 'MoreTextThatCouldBeOnOneLine', '+{~~~(@#UhuisdfiuhIUHDSFIUFHIl)}9823)88hafff')

Saída desejada:

('@first_name','AlongStringOfTextThatHasNoSpacesButIsSeparatedByLineBreaks','{+iuhsfIUHSDFUi88493089898290990+-]@@@#*$()(@*$*)))***)@@**@#*usdfiuhnknwuiewi')
('@second_name','MoreTextThatCouldBeOnOneLine','+{~~~(@#UhuisdfiuhIUHDSFIUFHIl)}9823)88hafff')

questionAnswers(1)

yourAnswerToTheQuestion