Seite 1 von 1

Wo sind die vielen String Konstanten geblieben?

Verfasst: Samstag 28. Dezember 2019, 10:19
von Miranda
Hallo ich hoffe ihr seid gut durch die Feiertage gekommen :-)

Ich hatte (aus Versehen) in einer Dokumentation https://docs.python.org/2.4/lib/node108.html über Python 2 gelesen, dass es zahlreiche String Konstanten gibt, die man in dieser Form aufrufen kann:

Code: Alles auswählen

import string
print(string.letters)
string.letters wären dabei alle Buchstaben in groß oder klein gewesen - nicht nur die von ASCII.

Tolle Sache, da ich unerwünschte Zeichen am Anfang und am Ende aus einem String entfernen wollte. So in der Art:

Code: Alles auswählen

wert.strip(string.letters)

In diesem Fall wollte ich nur die Zahlen in der Mitte des Strings haben, die übrig bleiben.
Wobei dieser Anwendungsfall gar nicht unbedingt so wichtig ist.

Meine Frage ist, warum viele dieser praktischen String Konstanten in Python 3 https://docs.python.org/3.7/library/string.html nicht mehr vorhanden sind?

Gibt es da einen Ersatz?

Viele liebe Grüße an Euch :-)

Re: Wo sind die vielen String Konstanten geblieben?

Verfasst: Samstag 28. Dezember 2019, 10:31
von Sirius3
Die vielen tollen Konstanten gibt es immer noch, haben anderer den Vorsatz ASCII_ weil sie eben nur den ASCII-Zeichensatz umfassen.

Re: Wo sind die vielen String Konstanten geblieben?

Verfasst: Samstag 28. Dezember 2019, 10:35
von Miranda
Hallo Sirius3,

es sind schon weniger. Ja, die Konstanten, die sich auf ASCII beziehen sind geblieben (.zB. ascii_letters). Die Interessanten wie letters oder lowercase und uppercase (eben nicht nur für den uninteressanten Teil in ASCII) sind nicht mehr vorhanden?

Re: Wo sind die vielen String Konstanten geblieben?

Verfasst: Samstag 28. Dezember 2019, 10:48
von ThomasL
Führe doch einfach mal dir(string) nach import string aus.

Re: Wo sind die vielen String Konstanten geblieben?

Verfasst: Samstag 28. Dezember 2019, 10:51
von __blackjack__
@Miranda: „Die vielen“ ist auch gut, es sind drei die es nicht mehr gibt, wobei eine davon aus den anderen beiden gebildet wird, also im Grunde sind es nur zwei. Und konstant waren die auch nicht, weil die sich ja durch `locale.locale()` verändern konnten. Globaler, prozessweiter Zustand.

Warum bist Du denn in der Dokumentation bis 2.5 zurück gegangen? In 2.7 gab es die auch noch (Py2.7 — string). Die sind beim Schritt zu Python 3 weggefallen (Py3.0 — string). Macht ja auch Sinn beim Schritt zu Unicode für den Zeichenkettentyp, denn da gibt es echt *viele* Buchstaben weil man eben nicht mehr auf 256 Werte pro Zeichen beschränkt ist. Beziehungsweise hat man auch keine Multibyte-Zeichen mehr, denn Dein Anwendungsfall wäre bei einer `locale` die UTF-8 verwendet in Python 2 im Grunde fehlerhaft.

Das klingt nach einem Job für reguläre Ausdrücke.

Re: Wo sind die vielen String Konstanten geblieben?

Verfasst: Samstag 28. Dezember 2019, 17:32
von Miranda
__blackjack__ hat geschrieben: Samstag 28. Dezember 2019, 10:51 ...
Warum bist Du denn in der Dokumentation bis 2.5 zurück gegangen? In 2.7 gab es die auch noch
...
Das klingt nach einem Job für reguläre Ausdrücke.
Ja, an reguläre Ausdrücke hatte ich auch gedacht. Mit den String Konstanten wäre das aber eine ganz pfiffige Sache gewesen.

Ich bin bei der Suche zum Thema "Python String Methoden" zufällig auf eine andere alte Seite gekommen und da war erst gar nicht zu erkennen, dass es sich auf Python < 3 bezog :-|

Aber vielen lieben Dank :-)

Re: Wo sind die vielen String Konstanten geblieben?

Verfasst: Sonntag 29. Dezember 2019, 09:21
von Sirius3
Was willst Du eigentlich machen? Vielleicht gibt es ja noch andere pfiffige Sachen.

Re: Wo sind die vielen String Konstanten geblieben?

Verfasst: Sonntag 29. Dezember 2019, 09:30
von Miranda
Sirius3 hat geschrieben: Sonntag 29. Dezember 2019, 09:21 Was willst Du eigentlich machen? Vielleicht gibt es ja noch andere pfiffige Sachen.
Eine ganz einfache Sache: Strings in dieser Art "abdcef1234xyz" und ich brauche nur die Zahl?

Viele liebe Grüße

Re: Wo sind die vielen String Konstanten geblieben?

Verfasst: Sonntag 29. Dezember 2019, 09:45
von Sirius3
Dafür sind doch reguläre Ausdrücke ideal. r"\d+"