Seite 1 von 1

partition: Ausdruck in eckigen Klammern verstehen

Verfasst: Dienstag 12. Juni 2018, 17:07
von Sophus
Hallo Leute,

in der Dokumentation wird die partition wie folgt forgestellt:

Code: Alles auswählen

str,partition(sep)
Für sep steht eine bestimmte und individuelle Zeichenkette. Das können Punkt, Komma etc sein. Soweit verstehe ich es. Wenn man partition() ausführt, erhält man einen Tuple.

In einigen Fällen möchte man einen Text zwischen zwei Zeichen. Dies könnte so aussehen:

Code: Alles auswählen

str.partition('<td>')[-1].rpartition('</td>')[0]
Das heißt, aus:
'<td> BLAAAH </td>'
wird dann:
BLAAAH
Was mich jetzt eher interessiert, ist, was die [-1] und [0] sagen - vor allem -1.

Denn wenn ich einen Tuple habe, sagen wir mal ('foo', 'bar'), und ich will auf 'bar' zugreifen, dann würde ich [1] verwenden, denn [0] liefert mir 'foo'. Im Kontext von partition() tue ich mich damit schwer, die Zahlen in den eckigen Klammern zu verstehen.

Re: partition: Ausdruck in eckigen Klammern verstehen

Verfasst: Dienstag 12. Juni 2018, 17:29
von narpfel
@Sophus: Der Indexoperator bedeutet immer das selbe. Ob das Tuple jetzt von `str.partition` erzeugt wird, ist dem Indexoperator egal.
Oder anders ausgedrückt: In Python ist

Code: Alles auswählen

name = expression
name[foo]
immer und für jede mögliche `expression` komplett äquivalent zu

Code: Alles auswählen

expression[foo]
Wie sich der Indexzugriff verhält, ist in Common Sequence Operations (Python 2) dokumentiert.

Für HTML solltest du außerdem eher einen richtigen Parser wie BeautifulSoup oder LXML benutzen und nicht mit `str.partition` selbst was zusammenbasteln.

Re: partition: Ausdruck in eckigen Klammern verstehen

Verfasst: Dienstag 12. Juni 2018, 17:34
von ThomasL
str.partition und str.rpartition geben dir halt tuple zurück
einmal greifst du auf das letzte [-1] Element und dann auf das erste [0] zu