Text mit Umbruch einfügen

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.
Benutzeravatar
michi-monster
User
Beiträge: 24
Registriert: Donnerstag 7. Dezember 2017, 18:30
Kontaktdaten:

Text mit Umbruch einfügen

Beitragvon michi-monster » Freitag 2. Februar 2018, 17:03

Halli, ich bin dabei ein Programm für die Übersetzung von Häkelanleitungen zu machen. Bis jetzt ist es so, dass ich beim eingefügten Text (Anleitungstext) keinen Zeilenumbruch haben kann. Sonst kommt ein Fehler. Kann man es so schreiben, dass ich den Text einfach kopiere und die Zeilenumbrüche akzeptiert werden? Falls ja: wie?

Code: Alles auswählen

import re
Anleitungstext = "Round 1: 2 ch, 6 sc in second chain from hook [6]Round 2: inc 6 times [12]Round 3: (sc in next st, inc) repeat 6 times [18]Round 4: (sc in next 2 st, inc) repeat 6 times [24]Round 5: (sc in next 3 st, inc) repeat 6 times [30]Round 6: (sc in next 4 st, inc) repeat 6 times [36]Round 7: sc in next 15 st, inc 6 times, sc in next 15 st [42]Round 8: sc in next 15 st, dec 6 times, sc in next 15 st [36]Round 9: sc in all 36 st [36]Round 10: sc in next 12 st, dec 6 times, sc in next 12st [30]Round 11-13: sc in all 30 st [30]Round 14: (sc in next 8 st, dec) repeat 3 times [27]Round 15: sc in all 27 st [27]Round 16: (sc in next 7 st, dec) repeat 3 times [24]Round 17: sc in all 24 st [24]Round 18: (sc in next 2 st, dec) repeat 6 times [18]Round 19: sc in all 18 st [18]Round 20: (sc in next st, dec) repeat 6 times [12]Round 21-22: sc in all 12 st [12]Fasten off leaving a tail for sewing. Stuff. " ""
translation_table = {'Rnd 2: (inc) repeat 6 times [12]':'jede Masche verdoppeln',
         'repeat 6 times':'6x wiederholen',
         '2sc in each':'Jede Masche verdoppeln',
         'in a magic ring':'in einen Fadenring',
          'sc in the next st, inc':'jede 2. Masche verdoppeln ',
         'sc in the next 2 st, inc':'jede 3. Masche verdoppeln',
         'sc in the 3 st,inc':'jede 4. Masche verdoppeln',
                     'sc':'fM',
                     'inc':'Zun',
                     'in next st':'in die nächste/n Maschen',
                     'in next 2 st':'jede 2.Mache verdoppeln',
                     'in next 8 st':'in die nächsten 8 Maschen',
           '(sc in the next 2 st), inc' : 'jede 3. Masche verdoppeln',
                     'sc in magic ring':'fM in den Fadenring',
                     'in the next':'in',
                     'sl st' :'KM',
                     'in all' : 'in alle',
                     'st':'Maschen',
                     'in next':'',
           'dec':'Abn',
                     'repeat 3 times':'3x wiederholen',
                     'repeat 4 times' : '4x wiederholen',
                     'repeat 2 times' : '2x wiederholen',
                     'fM in all 18 st':'fM in alle 18  Maschen',
                'Round':'Runde'
         }

pattern = re.compile(r'\b(' + '|'.join(translation_table.keys()) +r')\b')
result = pattern.sub(lambda x : translation_table[x.group()], Anleitungstext)
print(result)
Benutzeravatar
__deets__
User
Beiträge: 2177
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: Text mit Umbruch einfügen

Beitragvon __deets__ » Freitag 2. Februar 2018, 17:16

Schau dir mal die Dokumentation des re-Moduls an, das du ja verwendest. Da gibt es ein Argument, mit dem man mehrzeilige Texte zulassen kann.
Benutzeravatar
michi-monster
User
Beiträge: 24
Registriert: Donnerstag 7. Dezember 2017, 18:30
Kontaktdaten:

Re: Text mit Umbruch einfügen

Beitragvon michi-monster » Freitag 2. Februar 2018, 17:43

Ich habs gefunden: ich muss 3x ein Anführungszeichen nehmen. Dann akzeptiert er einen Zeilenumbruch. Danke.
Sirius3
User
Beiträge: 7069
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: Text mit Umbruch einfügen

Beitragvon Sirius3 » Samstag 3. Februar 2018, 17:19

@michi-monster: Du solltest den Text nicht direkt ins Programm einfügen, sondern aus einer Datei oder der Standardeingabe einlesen. Die Einrückungen in Deinem Übersetzungswörterbuch ist uneinheitlich. Der reguläre Ausdruck funktioniert nicht, weil die englischen Phrasen Sonderzeichen enthalten; Du brauchst ›re.escape‹.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder