[Tustep-Liste] Kuerzen eines Textes
Giorgio Giacomazzi
giorgio at giacomazzi.de
Do Mär 15 09:51:35 CET 2007
Lieber Herr Schälkle,
Kuno Schälkle wrote:
> Diskussionsforum Tustep-Liste
> Weitere Informationen: www.itug.de
> ------------------------------------------------------------
>
> Lieber Herr Reeg,
>
>> gibt es eine einfache Möglichkeit mit Mittel dner Makrosprache,
>> einen Text so zu verkürzen, daß nur die ersten drei und die letzten drei
>> Wörter übrig bleiben?
>>
>> a b c d e f g h i j k
>> zu
>> a b c ... i j k
vielleicht interessiert es Sie, wie einfach dieses Problem in Python
gelöst wird. Analog zu Ihren Beispielen unten:
text = "Das ist ein Beispiel zum Verkürzen eines Textes"
# Zeichen aus einem String extrahieren
text[:15] # 'Das ist ein wei'
text[-15:] # 'en eines Textes'
# Worte aus einer Liste extrahieren
words = text.split()
words[:3] # ['Das', 'ist', 'ein']
words[-3:] # ['Verkürzen', 'eines', 'Textes']
Mittels der Notation container[start:end] kann *direkt* auf Teile von
Strings und Listen zugegriffen werden (slicing); negative Indices zählen
vom Ende her. Es entfallen sämtliche Hilfskonstruktionen, LOOPs etc.,
auch Hilfsvariablen sind verzichtbar.
Die komplette Lösung der gestellten Aufgabe wäre dann
print " ".join(words[:3]), "...", " ".join(words[-3:])
Mit besten Grüßen,
Giorgio Giacomazzi
> eine fertige Funktion gibt es nicht. Eventuell
> kann die Funktion SHORTEN benutzt werden.
> Bei ihr kann man die maximale Zeichenzahl
> am Anfang und Ende des Textes angegeben
> werden. Es wird dann am Blank davor bzw.
> danach abgetrennt. Im unten angegebenen
> Beispiel 1 waere das Ergebnis:
> "Das ist ein ... eines Textes"
> Das Beispiel 2 liefert das genaue Ergebnis:
> "Das ist eine ... Verk^urzen eines Textes"
>
> Mit herzlichen Gruesse
> Kuno Schaelkle
>
> ========================================
>
> $$=-
> MODE VARIABLE
>
> SET lang = "Das ist ein kleines Beispiel zum Verkürzen eines Textes"
>
> SET kurz = SHORTEN (lang, 15, " ... ", 15)
>
> PRINT kurz
>
> ---------------------------------------------------------------------
>
> $$=-
> MODE VARIABLE
>
> SET lang = "Das ist ein weiteres Beispiel zum Verkürzen eines Textes"
>
> - Text in einzelne Wörter aufteilen
>
> SET liste = SPLIT (lang, ":<> :")
>
> - Anzahl der Wörter feststellen
>
> SET anzahl = SIZE (liste)
>
> IF (anzahl.LE.6) THEN
>
> - bei 6 oder weniger Wörter ist nichts zu tun
>
> kurz = lang
>
> ELSE
>
> - sonst die ersten drei Wörter in "kurz" einsammeln
>
> SET kurz = ""
> LOOP n = 1, 3
> SET wort = SELECT (liste, #n)
> SET kurz = APPEND (kurz, " ", wort)
> ENDLOOP
>
> - drei Punkte für die ausgelassenen Wörter ergänzen
>
> SET kurz = CONCAT (kurz, " ...")
>
> - die drei lezten Wörter in noch anhängen
>
> SET anfang = anzahl - 2
> LOOP n = anfang, anzahl
> SET wort = SELECT (liste, #n)
> SET kurz = APPEND (kurz, " ", wort)
> ENDLOOP
>
> ENDIF
>
> - zur Kontrolle ausgeben
>
> PRINT kurz
>
> ------------------------------------------------------------
> Tustep-Liste at itug.de
> https://lists.uni-wuerzburg.de/mailman/listinfo/tustep-liste
Mehr Informationen über die Mailingliste Tustep-Liste