Und hier ist meine:
Code: Alles auswählen
def group_uppers(sentence):
result = []
pair = []
for word in sentence.split()[1:]:
if word[0].isupper():
pair.append(word)
else:
if pair:
result.append(pair)
pair = []
if len(pair) == 2:
result.append(pair)
pair = []
if pair:
result.append(pair)
return result
Ich bin davon ausgegangen, dass zwei nicht direkt aufeinander folgende groß geschriebene Wörter auch berücksichtigt werden sollen, dann halt nicht als Paar...
Code: Alles auswählen
>>> print group_uppers('Ist der Max von Mustermann ein Freund von Clara Schumann?')
[['Max'], ['Mustermann'], ['Freund'], ['Clara', 'Schumann?']]
Wobei die Probleme bei folgendem Satz schon anfangen:
Code: Alles auswählen
print group_uppers('Ist der Max von Mustermann Clara Schumanns Freund?')
[['Max'], ['Mustermann', 'Clara'], ['Schumanns', 'Freund?']]
Weshalb ich den ganzen Ansatz für völlig verkehrt halte.
Ich glaube, ohne ein Wörterbuch, das möglichst alle Vornamen enthält, kommt man nicht wirklich weiter. Selbst dann lässt sich bei 'Das ist das Zimmer vom Nikolaus' kaum zwischen dem Nachnamen 'Zimmer' und dem Substantiv 'Zimmer' unterscheiden.
mutetella