Seite 1 von 1
translate() kann man davon 2 definieren?
Verfasst: Donnerstag 13. März 2008, 12:37
von mondschein
Hallo,
ich habe mal eine Frage: könnte ich innerhalb einer py-Datei 2 translate() definieren!?
-->translate1()
-->translate2()
Liebe Grüße
Verfasst: Donnerstag 13. März 2008, 12:41
von CM
Klar.
Wenn Du zwei Funktionen ein und denselben Namen gibst, hast Du wahrscheinlich nicht das Verhalten, das Du erhoffst. Bei unterschiedlichen Namen - kein Problem. Einfach probieren.
Gruß,
Christian
Verfasst: Donnerstag 13. März 2008, 12:45
von mondschein
mhm naja ich dachte translate() is vordefiniert...oder!?
also das ist eine Methode von String:
translate(s, table, deletions='')
translate(s,table [,deletions]) -> string
Return a copy of the string s, where all characters occurring
in the optional argument deletions are removed, and the
remaining characters have been mapped through the given
translation table, which must be a string of length 256. The
deletions argument is not allowed for Unicode strings.
http://docutils.sourceforge.net/sandbox ... tring.html
Heißt das dann, das es nur ein translate() gibt? Also innerhalb einer Datei?
Verfasst: Donnerstag 13. März 2008, 12:59
von Leonidas
Was du meinst ist ``string.translate`` und das macht etwas ganz anderes als dein `translate()``.
Verfasst: Donnerstag 13. März 2008, 13:00
von CM
Steht da oben irgendwo, daß Du die entsprechende Methode des string-Moduls meinst?
Aber auch hier gilt: Klar kannst Du die Methoden überschreiben. Was heißt "innerhalb einer Datei"? Vielleicht solltest Du Dir mal das
Tutorial-Kapitel über Namespaces anschauen.
Wenn Dein "translate()" die Methode einer anderen Klasse ist: Kein Problem. Wenn es eine "stand alone"-Funktion ist: Ebenso eindeutig.
Gruß,
Christian
Verfasst: Donnerstag 13. März 2008, 13:01
von mondschein
ja sorry ich glaub ich habe mich da gerade verguckt. Habe einfach mal mein altes translate in translate1 umbenannt und es hat noch funktioniert jetzt schreib ich schnell das translate2 und dann mal gucken

hoffentlich klappts
liebe grüße und danke schon mal für den tipp
Verfasst: Donnerstag 13. März 2008, 13:01
von Zap
Ja, translate ist eine Methode von string.
Wenn du dir selber eine
translate Mehode schreibst ist das kein Problem, da die von string ja auch in dessen sogenannten Namespace liegt.
Was man dann antürlich nicht machen sollte ist ein:
In diesem Fall wird die
translate Methode von String in den Namensbereich von deinem Modul geholt und du würdest diese mit deiner neuen Methode Namens
translate überschreiben.
Deshalb sollte man auch am besten ganz auf Stern-Importe verzichten.
edit: zu langsam

Verfasst: Donnerstag 13. März 2008, 13:10
von mondschein
Du sag mal, meinst du das es möglich ist:
Code: Alles auswählen
Do(text)
if text=re.sub(r'(?s)\n:+ *<math>(.*?)</math>\s*?([\.,;]?)\n', text)
do translate1()
else
do translate2()
gibt es eine abfrage die true wird, wenn z.B. <math> im text vorkommt, so das ich an dieser stelle (alles was zwischen <math> und</math> steht) andere übersetzungsregeln benutzte?
Edit (BlackJack): Code in Tags gesetzt.
Verfasst: Donnerstag 13. März 2008, 15:46
von BlackJack
Das da ist aus mehreren Gründen nicht möglich. Hauptsächlich weil es keine gültige Python-Syntax ist.
Zuweisungen in der ``if``-Bedingung sind nicht erlaubt und es fehlen Doppelpunkte.
Ausserdem fehlt bei `re.sub()` ein Argument. Falls Du überhaupt `re.sub()` meinst und nicht vielleicht re.search()!?
Verfasst: Donnerstag 13. März 2008, 16:00
von mondschein
habe jetzt ne andere coole Sache gefunden und zwar mit urllib.quote ,weil ja dann keine sonderzeichen mehr drin sind, die nach translate() übersetzt werden un dann übersetzt ich das ganze zurück, aber es klappt nicht und ich weiß nicht warum
http://www.python-forum.de/viewtopic.php?p=93106#93106
Liebe Grüße und danke für deine Hilfe