[Trennmuster] Python-Skript "hyphenation.py"
Guenter Milde
gm43 at e-mail.de
Sa Sep 5 16:26:24 CEST 2026
Am 3.09.26 schrieb Herbert Voß:
> Am 02.09.26 um 23:53 schrieb Keno Wehr:
> wenn ich skripte/lib/py_patuse/hyphenation.py aufrufe, kommt die Meldung
> "SyntaxWarning: invalid escape sequence '\p'". (Das Skript funktioniert
> aber ansonsten.)
> Ich bin mir nicht sicher, ob das Skript ein Update braucht oder meine
> Konfiguration falsch ist. Ich habe Python 3.12.3.
> Changed in version 3.6: Unrecognized escape sequences produce a
> DeprecationWarning. In a future Python version they will be a SyntaxWarning and
> eventually a SyntaxError.
> \pattern -> \\pattern
> \message -> \\message
> oder besser einen r-String benutzen.
Ich habe das lokal korrigiret, doch beim Hochladeversuch erhalte ich
py_patuse > git push
milde at repo.or.cz: Permission denied (publickey).
Schwerwiegend: Konnte nicht vom Remote-Repository lesen.
Bitte stellen Sie sicher, dass die korrekten Zugriffsberechtigungen bestehen
und das Repository existiert.
milde at heinz:/usr/local/src/wortliste/skripte/lib/py_patuse >
Falls jemand den folgenden Patch einpflegen kann wäre ich froh:
>From 5f638511031250c2683df3a82df99a16362da17a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?G=C3=BCnter=20Milde?= <milde at users.sf.net>
Date: Sat, 5 Sep 2026 14:58:01 +0200
Subject: [PATCH] Python-Skripte: Korrigiere invalide "Escape-Sequenzen".
---
skripte/lib/py_patuse/hyphenation.py | 6 +++---
skripte/lib/py_wortliste/stilfilter.py | 2 +-
skripte/lib/py_wortliste/wortliste.py | 8 ++++----
skripte/lib/py_wortliste/wortzerlegung.py | 6 +++---
4 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/skripte/lib/py_patuse/hyphenation.py b/skripte/lib/py_patuse/hyphenation.py
index da9bb99..91ca31a 100755
--- a/skripte/lib/py_patuse/hyphenation.py
+++ b/skripte/lib/py_patuse/hyphenation.py
@@ -51,7 +51,7 @@ class Hyphenator(object):
for h in re.split(r"[^-]", ex) ]
def yield_patterns(self, lines):
- """
+ r"""
Yield hyphenation patterns from a sequence of strings
(the content of a pattern file).
Discard comments and metadata.
@@ -74,8 +74,8 @@ class Hyphenator(object):
'a1 b2 c3'
>>> extract_patterns(['% leading comment\n',
- ... '\message{German Lyrics patterns}\n',
- ... '\patterns{%\n',
+ ... '\\message{German Lyrics patterns}\n',
+ ... '\\patterns{%\n',
... '.a2b3a\n'
... '}\n'])
'.a2b3a'
diff --git a/skripte/lib/py_wortliste/stilfilter.py b/skripte/lib/py_wortliste/stilfilter.py
index 2f70ea3..86e0a0c 100755
--- a/skripte/lib/py_wortliste/stilfilter.py
+++ b/skripte/lib/py_wortliste/stilfilter.py
@@ -419,7 +419,7 @@ def keine_schwankungsfaelle(wort):
def keine_flattervokale(wort):
"""Entferne Trennmarker vor Einzevokalsilben (Thea-ter)."""
- wort = re.sub('>([aeiouyäöü])[-]\.?', '>\\1', wort)
+ wort = re.sub(r'>([aeiouyäöü])[-]\.?', '>\\1', wort)
wort = re.sub('(?<![<>=])[-.]+([aeiouyäöüëï])(?=[->][^.])', '\\1', wort)
return wort
diff --git a/skripte/lib/py_wortliste/wortliste.py b/skripte/lib/py_wortliste/wortliste.py
index 9383833..873bdc0 100755
--- a/skripte/lib/py_wortliste/wortliste.py
+++ b/skripte/lib/py_wortliste/wortliste.py
@@ -1982,7 +1982,7 @@ def ableitung1901(wort, keep_key=False):
#
# ::
- wort = re.sub('ß(=+)e([rn][-<]+)\.', r'ß\1e\2', wort)
+ wort = re.sub(r'ß(=+)e([rn][-<]+)\.', r'ß\1e\2', wort)
# Dreikonsonantenregel
# """"""""""""""""""""
@@ -2080,13 +2080,13 @@ def versalschreibung(wort, lang='de'):
if '1901-x-versal' not in lang:
wort = wort.replace('·ss', 's-s') # a·ßen -> as-sen
# wort = re.sub('(?<=[aeiouyäöü])-\.?ss', 's-s', wort)
- wort = re.sub('-\.?ss(?=[aeiouyäöü])', 's-s', wort)
+ wort = re.sub(r'-\.?ss(?=[aeiouyäöü])', 's-s', wort)
wort = re.sub('(?<=^[aeiouyäöü])ss(?=[aeiouyäöü])', 's-s', wort)
wort = re.sub('(?<=[=<][aeiouyäöü])ss(?=[aeiouyäöü])', 's-s', wort)
# Unterdrückung irreführender Trennung::
- wort = re.sub('ss(=+)(en|er)([<-])\.?', r'ss\1\2\3.', wort)
+ wort = re.sub(r'ss(=+)(en|er)([<-])\.?', r'ss\1\2\3.', wort)
# Dreikonsonantenregel für Ersatz-ss in de-CH-1901::
@@ -2664,7 +2664,7 @@ def sortkey_duden(entry):
if len(entry) == 1: # ein Muster pro Zeile, siehe z.B. pre-1901
key = join_word(key)
else:
- match = re.search('^[-0-9;]*([^;\s]+)', entry) # erstes volles Feld
+ match = re.search(r'^[-0-9;]*([^;\s]+)', entry) # erstes volles Feld
if match:
key = match.group(1)
else:
diff --git a/skripte/lib/py_wortliste/wortzerlegung.py b/skripte/lib/py_wortliste/wortzerlegung.py
index 2524343..857981b 100755
--- a/skripte/lib/py_wortliste/wortzerlegung.py
+++ b/skripte/lib/py_wortliste/wortzerlegung.py
@@ -731,7 +731,7 @@ if __name__ == '__main__':
default=default_wortliste)
parser.add_argument('-k', '--komposita',
help='Liste Konstituenten zusammengesetzter Wörter '
- '(Teile vor und nach \'=\'). '
+ r'(Teile vor und nach \'=\'). '
'"alle": auch vollständige Wörter der Eingabe, '
'"teile": keine vollständigen Wörter der Eingabe, '
'"selbständige": keine Konstituenten mit Bindungs-s, '
@@ -741,7 +741,7 @@ if __name__ == '__main__':
default='teile')
parser.add_argument('-p', '--praefixe',
help='Präfixe (statt Komposita) bestimmen. '
- '"alle": alle Präfixe (Wortanfang bis \'<\', '
+ r'"alle": alle Präfixe (Wortanfang bis \'<\', '
'"wörter": nur Homonyme zu Einträgen und Teilwörtern, '
'"neuwörter": keine Homonyme, '
'"": keine. '
@@ -750,7 +750,7 @@ if __name__ == '__main__':
default='')
parser.add_argument('-s', '--suffixe',
help='Suffixe (statt Komposita) bestimmen. '
- '"alle": alle Suffixe von \'>\' bis Wortende, '
+ r'"alle": alle Suffixe von \'>\' bis Wortende, '
'"wörter": nur Homonyme zu Einträgen und Teilwörtern, '
'"neuwörter": keine Homonyme, '
'"": keine. '
--
2.47.3
Viele Grüße
Günter
Mehr Informationen über die Mailingliste Trennmuster