
Ich habe ein kniffliges Problem zu lösen: Ein längerer Text soll in einzelne Sätze aufgespalten werden. Leider enden nicht alle Sätze am Zeilenende und darüber hinaus enden auch nicht alle mit einem Punkt. Der Text lautet: text = """Dies ist ein Auszug aus einem langen Text: Welche Zeichen befinden sich am Satzende? Manchmal ist es ein Ausrufezeichen! Häufig ist es ein Punkt. """ Hat jemand eine Idee? Danke! Frank -- *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* Frank Grellert Email: grellert@web.de Webseite: http://fotoblog.57ps.de/ Identity: http://grellert.myopenid.com/ *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*

Ich fürchte eine 100%e Lösung gibt's nicht. Aber vielleicht hilft das ja: last_chars = {word[-1] for word in text.split()} Damit lässt sich schon mal abschätzen, welche Endungszeichen es gibt. Wenn du dir dann im Klaren bist, welche du alle akzeptieren möchtest: Nimm dann dafür re.split https://docs.python.org/2/library/re.html#re.split re.split('((?\W|\s)+)(?\.|\?|!)', text) Bin grad auf dem Sprung, aber im Prinzip sollte es so gehen. vG Sven On 22.02.2017 17:49, Frank Grellert wrote:
Ich habe ein kniffliges Problem zu lösen: Ein längerer Text soll in einzelne Sätze aufgespalten werden. Leider enden nicht alle Sätze am Zeilenende und darüber hinaus enden auch nicht alle mit einem Punkt. Der Text lautet:
text = """Dies ist ein Auszug aus einem langen Text: Welche Zeichen befinden sich am Satzende? Manchmal ist es ein Ausrufezeichen! Häufig ist es ein Punkt. """ Hat jemand eine Idee?
Danke!
Frank

On Wednesday, 22 February, 2017 05:49 PM, Frank Grellert wrote:
Ein längerer Text soll in einzelne Sätze aufgespalten werden. Leider [...] Hat jemand eine Idee?
Perfekt wird das ein Rechner nur schwer hinbekommen. Aber vielleicht funktioniert http://www.nltk.org/api/nltk.tokenize.html#nltk.tokenize.sent_tokenize gut genug für dich!? Grüße, Achim

Frank Grellert wrote:
Ich habe ein kniffliges Problem zu lösen: Ein längerer Text soll in einzelne Sätze aufgespalten werden. Leider enden nicht alle Sätze am Zeilenende und darüber hinaus enden auch nicht alle mit einem Punkt. Der Text lautet:
text = """Dies ist ein Auszug aus einem langen Text: Welche Zeichen befinden sich am Satzende? Manchmal ist es ein Ausrufezeichen! Häufig ist es ein Punkt. """ Hat jemand eine Idee?
Vielleicht experimentierst Du mal mit regulären Ausdrücken, z. B.:
import re text = """Dies ist ein Auszug aus einem langen Text: Welche Zeichen ... befinden sich am Satzende? ... Manchmal ist es ein Ausrufezeichen! Häufig ist es ein Punkt. ... """ r = re.compile(r"(.+?[:.!?])(?:\s+|$)", re.DOTALL) for satz in r.findall(text): ... print(repr(satz)) ... 'Dies ist ein Auszug aus einem langen Text:' 'Welche Zeichen\nbefinden sich am Satzende?' 'Manchmal ist es ein Ausrufezeichen!' 'Häufig ist es ein Punkt.'
Allerdings:
text = "Vielleicht experimentierst Du mal mit regulären Ausdrücken, z. B.:" for satz in r.findall(text): ... print(repr(satz)) ... 'Vielleicht experimentierst Du mal mit regulären Ausdrücken, z.' 'B.:'
participants (4)
-
Achim Domma
-
Frank Grellert
-
Peter Otten
-
Sven R. Kunze