Seite 1 von 1

Silbentrennung auflösen Python

Verfasst: Dienstag 5. Juni 2018, 14:30
von ajamada
Hallo ihr,
ich habe eine Textdatei in der ich gerne die Silbentrennung auflösen würde.
Dazu habe ich den Text eingelesen und eine leere Liste Zeilen erstellt.
In der Liste sind nun alle einzelnen Zeilen aufgelistet.

Dann habe ich nach den Worten gesucht, die mit einem Bindestrich aufhören und diese in eine extra Liste Wörter eingefügt.
Jetzt will ich den Bindestrich durch so einen Strich | ersetzten und den Rest des Wortes aus der nachfolgenden Zeile zu dem Anfang des Wortes in der vorherigen Zeile anhängen.
Ich hatte überlegt, dass ich bei diese beiden Zeilen dann die einzelnen Wörter in Listen zerlege und das Ende abschneide um er in der vorherigen Zeile ans Ende der Wörterlist anhängen.

Vielleicht kann mir da jemand einen Tipp/ Ansatz geben wie ich da weiterkommen könnte.
Liebe Grüße

Code: Alles auswählen

import re
f=open("Datei.txt","rt", encoding="utf-8")  
zeilen=[]
count=0 
for line in f: 
    zeilen.append(line) 
    count=count+1 
f.close() 

for eintrag in zeilen:     
    suchen=re.findall(r"[A-Z]?[a-z]+ - [\n]", eintrag) 
    wörter=[] 
    for x in suchen:
        wörter.append(x)
    print(wörter)

Re: Silbentrennung auflösen Python

Verfasst: Dienstag 5. Juni 2018, 16:08
von Hofei
Hallo und Willkommen im Forum

Vielleicht hilft dir dieser Ansatz etwas weiter, ich hoffe ich habe deine Anforderung mit dem | richtig verstanden:

Datei:

Code: Alles auswählen

Ich bin Zeile 1
Silben-
trennung in Zeile 2
Code:

Code: Alles auswählen

DATEI = "silbentrennung.txt"


def zeilen_einlesen():
    with open(DATEI) as file:
        inhalt = file.readlines()
    inhalt_ = [zeile.strip() for zeile in inhalt]
    return inhalt_


def auswertung(inhalt):
    zeilen_neu = []
    durchlauf = False
    for zeilennummer, zeile in enumerate(inhalt):
        if durchlauf:
            pos_erstes_wort = inhalt[zeilennummer].find(" ")
            zeile = zeile[pos_erstes_wort+1:]
        if zeile[-1] == "-":
            pos_erstes_wort = inhalt[zeilennummer + 1].find(" ")
            erstes_wort = inhalt[zeilennummer + 1][:pos_erstes_wort]
            zeile = zeile[:-1]
            zeile += erstes_wort + "|"
            durchlauf = True
        else:
            durchlauf = False
        zeilen_neu.append(zeile)
    return zeilen_neu


def ausgabe(inhalt):
    for zeile in inhalt:
        print(zeile)


def main():
    inhalt = zeilen_einlesen()
    inhalt_neu = auswertung(inhalt)
    ausgabe(inhalt_neu)


if __name__ == "__main__":
    main()

Re: Silbentrennung auflösen Python

Verfasst: Dienstag 5. Juni 2018, 16:43
von sls
ajamada hat geschrieben: Dienstag 5. Juni 2018, 14:30 Hallo ihr,
ich habe eine Textdatei in der ich gerne die Silbentrennung auflösen würde.
Mir ist nicht klar, was du mit `auflösen` meinst. Willst du jene Wörter mit Silbentrennung, gekennzeichnet durch einen Bindestrich, zusammenführen in dem du den Bindestrich ersatzlos entfernst? Wie sieht eine solche Textdatei aus?

Der reguläre Ausdruck ist IMO overkill, das kannst du einfacher mit den Builtins von Python lösen. Zum Einlesen der textdatei würde ich mir mal das with-statement geben, dann musst du den Filedeskriptor nicht mehr händisch schließen, für das weitere Vorgehen kannst du mittels `split()` und `replace()` die Silbentrennung *auflösen*.

Re: Silbentrennung auflösen Python

Verfasst: Dienstag 5. Juni 2018, 17:01
von __blackjack__
Wie wird mit so etwas wie dem hier umgegangen?
Es geht um Gross-
und Kleinbuchstaben

Re: Silbentrennung auflösen Python

Verfasst: Dienstag 5. Juni 2018, 17:24
von Hofei
das macht natürlich meinen Code zunichte ;)