[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