Seite 1 von 1
Python string methoden
Verfasst: Mittwoch 16. Dezember 2020, 16:57
von Zauberer
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?
Re: Python string methoden
Verfasst: Mittwoch 16. Dezember 2020, 17:11
von noisefloor
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
Re: Python string methoden
Verfasst: Mittwoch 16. Dezember 2020, 17:15
von Sirius3
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.
Re: Python string methoden
Verfasst: Mittwoch 16. Dezember 2020, 18:20
von Zauberer
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.
Re: Python string methoden
Verfasst: Mittwoch 16. Dezember 2020, 18:24
von Zauberer
Sirius3, ich verstehe deine Antwort nicht. Also, wenn hier format(format_string, /, args, kwargs). Dann bedeutet das, dass der string kein keywordargument sein darf sondern ein Positionelles Argument?
Re: Python string methoden
Verfasst: Mittwoch 16. Dezember 2020, 18:29
von Zauberer
parse(format_string)
Loop over the format_string and return an iterable of tuples (literal_text, field_name, format_spec, conversion).
Wie benutzt man hier diese Methode ? Und was ist ein literal_text und field_name?
Re: Python string methoden
Verfasst: Mittwoch 16. Dezember 2020, 18:50
von __blackjack__
@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.
Re: Python string methoden
Verfasst: Mittwoch 16. Dezember 2020, 19:15
von Sirius3
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.