Hallo Zusammen,
ich habe ein paar Fragen an euch. Meine erste Frage ist, was sind Templates? Aus dem Zusammenhang(python library reference) kann ich mir nicht erschließen, was das Template für eine Funktion hat.
Außerdem verstehe ich nicht wie man diese public-methods verwendet und einsetzt: format(format_string, /, *args, **kwargs). Bei dieser Methode habe ich nicht rausfinden können, was dieses Zeichen: / bedeutet und welche Funktion es hat. Diese string - Methoden: parse(), get_field(), get_value(), convert_field() ; verstehe ich nicht.
Ein Auszug aus der Library Reference:
def convert_field(self, value, conversion):
# do any conversion on the resulting object
if conversion is None:
return value
elif conversion == 's':
return str(value)
elif conversion == 'r':
return repr(value)
elif conversion == 'a':
return ascii(value)
raise ValueError("Unknown conversion specifier {0!s}".format(conversion))
wenn ich bei pycharme: convert_field(20, 'a')
kommt immer ein Fehler raus. Positional Argument required, conversion is missing.
Kann mir da jemand helfen?
Python string methoden
- noisefloor
- User
- Beiträge: 4194
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
was ist diese "library reference", von der du sprichst? Es gab AFAIK ein Python Buch, das so hieß, aber das ist inzwischen veraltet. Oder meinst du die offizielle Python-Doku?
Templates sind "Vorlagen mit Platzhaltern". Um die Frage tiefer zu beantworten müsstest du noch sagen, von welchen Templates bzw. welcher Template-Engine du genau sprichst.
Gruß, noisefloor
was ist diese "library reference", von der du sprichst? Es gab AFAIK ein Python Buch, das so hieß, aber das ist inzwischen veraltet. Oder meinst du die offizielle Python-Doku?
Templates sind "Vorlagen mit Platzhaltern". Um die Frage tiefer zu beantworten müsstest du noch sagen, von welchen Templates bzw. welcher Template-Engine du genau sprichst.
Gruß, noisefloor
Das / bedeutet nur, dass alle Argumente vor dem / keine Keyword-Argumente sein dürfen, sondern Positionalargumente sein müssen.
In diesem Kapitel steht viel Zeug, was man niemals braucht, eigentlich sind nur die Abschnitte https://docs.python.org/3/library/strin ... ing-syntax und https://docs.python.org/3/library/strin ... i-language, sowie die Beispiele unter https://docs.python.org/3/library/strin ... t-examples relevant.
In diesem Kapitel steht viel Zeug, was man niemals braucht, eigentlich sind nur die Abschnitte https://docs.python.org/3/library/strin ... ing-syntax und https://docs.python.org/3/library/strin ... i-language, sowie die Beispiele unter https://docs.python.org/3/library/strin ... t-examples relevant.
Hallo noisefloor,
ich meine die offizielle Doku von Python.org. Allgemein würde ich nur gerne wissen, was eine Vorlage für ein Platzhalter ist. Ich denke Platzhalter sind {} diese Zeichen, die man benutzt, wenn man einen String formatiert.
Ich weiß halt nicht wie so eine Template in Python aussieht. Es gibt halt viele Begriffe die ich einfach nicht verstehe. Vielleicht kannst du mir anhand dieses Beispiels erklären, wo hier die Vorlage für den Platzhalter ist.
>>>
>>> from string import Template
>>> s = Template('$who likes $what')
>>> s.substitute(who='tim', what='kung pao')
'tim likes kung pao'
>>> d = dict(who='tim')
>>> Template('Give $who $100').substitute(d)
Traceback (most recent call last):
...
ValueError: Invalid placeholder in string: line 1, col 11
>>> Template('$who likes $what').substitute(d)
Traceback (most recent call last):
...
KeyError: 'what'
>>> Template('$who likes $what').safe_substitute(d)
'tim likes $what'
Danke für die schnelle Antwort.
ich meine die offizielle Doku von Python.org. Allgemein würde ich nur gerne wissen, was eine Vorlage für ein Platzhalter ist. Ich denke Platzhalter sind {} diese Zeichen, die man benutzt, wenn man einen String formatiert.
Ich weiß halt nicht wie so eine Template in Python aussieht. Es gibt halt viele Begriffe die ich einfach nicht verstehe. Vielleicht kannst du mir anhand dieses Beispiels erklären, wo hier die Vorlage für den Platzhalter ist.
>>>
>>> from string import Template
>>> s = Template('$who likes $what')
>>> s.substitute(who='tim', what='kung pao')
'tim likes kung pao'
>>> d = dict(who='tim')
>>> Template('Give $who $100').substitute(d)
Traceback (most recent call last):
...
ValueError: Invalid placeholder in string: line 1, col 11
>>> Template('$who likes $what').substitute(d)
Traceback (most recent call last):
...
KeyError: 'what'
>>> Template('$who likes $what').safe_substitute(d)
'tim likes $what'
Danke für die schnelle Antwort.
- __blackjack__
- User
- Beiträge: 14053
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Zauberer: Das / in Funktionssignaturen wird bei Funktionen im Tutorial erklärt: https://docs.python.org/3/tutorial/cont ... parameters
Wobei man aufpassen sollte: das steht schon sehr lange in Dokumentationen, aber ist erst seit Python 3.8 Teil der Python-Syntax! Vorher betrifft das nur Funktionen/Methoden die in C implementiert sind.
Der `convert_field()`-Code ist keine Funktion sondern eine Methode. Da fehlt also die Klasse. Wenn man die Methode aufrufen will, muss man also erst einmal ein Objekt dieser Klasse erstellen und die Methode darauf aufrufen.
Eigentlich ist das keine richtige Methode weil `self` nicht verwendet wird, aber das ist zum überschreiben bei abgeleiteten Klassen geeignet, weshalb es dann letztlich doch eine Methode ist, denn man weiss ja nicht ob dann nicht doch das Objekt benötigt wird.
Vergiss am besten die `Formatter`-Klasse. Die brauchst Du nicht.
Die `Template`-Klasse ist für Vorlagen mit Platzhaltern. Eine Vorlage ist kein Platzhalter sondern enthält Platzhalter.
Was an dem Beispiel verstehst Du denn nicht? Platzhalter sind etwas das für etwas anderes steht und dadurch ersetzt (englisch „substituted“) werden kann. Was wird denn im Beispiel in der Zeichenkette ersetzt? *Das* sind die Platzhalter. Für die Werte die dann eingesetzt werden.
Wobei man aufpassen sollte: das steht schon sehr lange in Dokumentationen, aber ist erst seit Python 3.8 Teil der Python-Syntax! Vorher betrifft das nur Funktionen/Methoden die in C implementiert sind.
Der `convert_field()`-Code ist keine Funktion sondern eine Methode. Da fehlt also die Klasse. Wenn man die Methode aufrufen will, muss man also erst einmal ein Objekt dieser Klasse erstellen und die Methode darauf aufrufen.
Eigentlich ist das keine richtige Methode weil `self` nicht verwendet wird, aber das ist zum überschreiben bei abgeleiteten Klassen geeignet, weshalb es dann letztlich doch eine Methode ist, denn man weiss ja nicht ob dann nicht doch das Objekt benötigt wird.
Vergiss am besten die `Formatter`-Klasse. Die brauchst Du nicht.
Die `Template`-Klasse ist für Vorlagen mit Platzhaltern. Eine Vorlage ist kein Platzhalter sondern enthält Platzhalter.
Was an dem Beispiel verstehst Du denn nicht? Platzhalter sind etwas das für etwas anderes steht und dadurch ersetzt (englisch „substituted“) werden kann. Was wird denn im Beispiel in der Zeichenkette ersetzt? *Das* sind die Platzhalter. Für die Werte die dann eingesetzt werden.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Ich habe Dir doch geschrieben, dass die Beispiele hier stehen: https://docs.python.org/3/library/strin ... t-examples
Alles andere kannst Du vergessen, weil es nicht relevant ist.
Alles andere kannst Du vergessen, weil es nicht relevant ist.