translate() kann man davon 2 definieren?

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.
mondschein
User
Beiträge: 52
Registriert: Dienstag 11. März 2008, 16:35

translate() kann man davon 2 definieren?

Beitragvon mondschein » Donnerstag 13. März 2008, 12:37

Hallo,

ich habe mal eine Frage: könnte ich innerhalb einer py-Datei 2 translate() definieren!?
-->translate1()
-->translate2()
:?:
Liebe Grüße
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Donnerstag 13. März 2008, 12:41

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
mondschein
User
Beiträge: 52
Registriert: Dienstag 11. März 2008, 16:35

Beitragvon mondschein » Donnerstag 13. März 2008, 12:45

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?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 13. März 2008, 12:59

Was du meinst ist ``string.translate`` und das macht etwas ganz anderes als dein `translate()``.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Donnerstag 13. März 2008, 13:00

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
mondschein
User
Beiträge: 52
Registriert: Dienstag 11. März 2008, 16:35

Beitragvon mondschein » Donnerstag 13. März 2008, 13:01

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 :) :idea: hoffentlich klappts

liebe grüße und danke schon mal für den tipp
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Beitragvon Zap » Donnerstag 13. März 2008, 13:01

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.

Code: Alles auswählen

import string
string.translate


Was man dann antürlich nicht machen sollte ist ein:

Code: Alles auswählen

from string import *

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 ;)
mondschein
User
Beiträge: 52
Registriert: Dienstag 11. März 2008, 16:35

Beitragvon mondschein » Donnerstag 13. März 2008, 13:10

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.
BlackJack

Beitragvon BlackJack » Donnerstag 13. März 2008, 15:46

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()!?
mondschein
User
Beiträge: 52
Registriert: Dienstag 11. März 2008, 16:35

Beitragvon mondschein » Donnerstag 13. März 2008, 16:00

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 :cry: http://www.python-forum.de/viewtopic.php?p=93106#93106

Liebe Grüße und danke für deine Hilfe

Wer ist online?

Mitglieder in diesem Forum: /me