by Anonymous » 14 Apr 2025, 19:17
Ich habe eine benutzerdefinierte Str -Klasse geschrieben, weil ich eine Coallfold () -Methode haben möchte, die deutsche und skandinavische Umlauts ersetzt (ä, Å, ö, Ø, ü…). Es erbt aus der Standard -STR -Klasse und ersetzt nur die Methode der CaseFold () nach der Verwendung davon.
Code: Select all
class str(str):
def casefold(self):
umlauts: dict ={
'ä': 'ae',
'ö': 'oe',
'ü': 'ue',
'œ': 'oe',
'ø': 'oe',
'æ': 'ae',
'å': 'aa',
}
string_ = self.__repr__().casefold()
for letter in string_:
if letter in umlauts:
string_ = string_.replace(letter, umlauts[letter])
return string_
Wenn ich Str () verwende, um eine Zeichenfolge zu instanziieren, funktioniert es gut:
Code: Select all
str('äåöøü').casefold()
"'aeaaoeoeue'"
, aber wenn ich mit '' instanziiert, wird die Standard -STR -Klasse verwendet.
Code: Select all
'äåöøüß'.casefold()
'äåöøüss'
type(str('äåöøü'))
type('äåöøüß')
Gibt es eine Möglichkeit, dies zu ändern, um die Instanziierung mit '' in die benutzerdefinierte Klasse zu ändern? Ich konnte nichts dazu finden.
Ich habe eine benutzerdefinierte Str -Klasse geschrieben, weil ich eine Coallfold () -Methode haben möchte, die deutsche und skandinavische Umlauts ersetzt (ä, Å, ö, Ø, ü…). Es erbt aus der Standard -STR -Klasse und ersetzt nur die Methode der CaseFold () nach der Verwendung davon.
[code]class str(str):
def casefold(self):
umlauts: dict ={
'ä': 'ae',
'ö': 'oe',
'ü': 'ue',
'œ': 'oe',
'ø': 'oe',
'æ': 'ae',
'å': 'aa',
}
string_ = self.__repr__().casefold()
for letter in string_:
if letter in umlauts:
string_ = string_.replace(letter, umlauts[letter])
return string_
[/code]
Wenn ich Str () verwende, um eine Zeichenfolge zu instanziieren, funktioniert es gut:
[code]str('äåöøü').casefold()
"'aeaaoeoeue'"
[/code]
, aber wenn ich mit '' instanziiert, wird die Standard -STR -Klasse verwendet.
[code]'äåöøüß'.casefold()
'äåöøüss'
type(str('äåöøü'))
type('äåöøüß')
[/code]
Gibt es eine Möglichkeit, dies zu ändern, um die Instanziierung mit '' in die benutzerdefinierte Klasse zu ändern? Ich konnte nichts dazu finden.