Silbentrennung auflösen Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ajamada
User
Beiträge: 1
Registriert: Dienstag 5. Juni 2018, 14:15

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)
Hofei
User
Beiträge: 14
Registriert: Freitag 6. Januar 2017, 20:15

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()
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

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*.
When we say computer, we mean the electronic computer.
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Wie wird mit so etwas wie dem hier umgegangen?
Es geht um Gross-
und Kleinbuchstaben
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Hofei
User
Beiträge: 14
Registriert: Freitag 6. Januar 2017, 20:15

das macht natürlich meinen Code zunichte ;)
Antworten