Generator teilt die Zeichenfolge nicht nach bestimmten Bezeichnern auf. Python 2

Bisher habe ich eine Möglichkeit gefunden, den Namen, die Zeichenfolge und die zusätzliche Zeichenfolge zu ermitteln. Es funktioniert für die zweite, aber nicht für die erste? Es ist so seltsam, weil die Formate wirklich ähnlich sind. ist es, weil es mehrere Zeilen ist? ich dachte dasif line == '+': pass würde das Problem umgehen.

i im Ausdruck '\ n' hinzugefügt, um den Unterschied anzuzeigen

Eingang

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

Current Script:

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

Ausgabe

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


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

Gewünschte Ausgabe:

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage