Hallo,
ich habe mal eine Frage: könnte ich innerhalb einer py-Datei 2 translate() definieren!?
-->translate1()
-->translate2()
Liebe Grüße
translate() kann man davon 2 definieren?
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
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
-
- User
- Beiträge: 52
- Registriert: Dienstag 11. März 2008, 16:35
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?
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?
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
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
-
- User
- Beiträge: 52
- Registriert: Dienstag 11. März 2008, 16:35
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
liebe grüße und danke schon mal für den tipp
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
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
Code: Alles auswählen
from string import *
Deshalb sollte man auch am besten ganz auf Stern-Importe verzichten.
edit: zu langsam
-
- User
- Beiträge: 52
- Registriert: Dienstag 11. März 2008, 16:35
Du sag mal, meinst du das es möglich ist:
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.
Code: Alles auswählen
Do(text)
if text=re.sub(r'(?s)\n:+ *<math>(.*?)</math>\s*?([\.,;]?)\n', text)
do translate1()
else
do translate2()
Edit (BlackJack): Code in Tags gesetzt.
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()!?
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()!?
-
- User
- Beiträge: 52
- Registriert: Dienstag 11. März 2008, 16:35
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
Liebe Grüße und danke für deine Hilfe