Wo sind die vielen String Konstanten geblieben?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Miranda
User
Beiträge: 23
Registriert: Sonntag 23. September 2018, 21:45

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 :-)
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Die vielen tollen Konstanten gibt es immer noch, haben anderer den Vorsatz ASCII_ weil sie eben nur den ASCII-Zeichensatz umfassen.
Miranda
User
Beiträge: 23
Registriert: Sonntag 23. September 2018, 21:45

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?
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Führe doch einfach mal dir(string) nach import string aus.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Miranda
User
Beiträge: 23
Registriert: Sonntag 23. September 2018, 21:45

__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 :-)
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Was willst Du eigentlich machen? Vielleicht gibt es ja noch andere pfiffige Sachen.
Miranda
User
Beiträge: 23
Registriert: Sonntag 23. September 2018, 21:45

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
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Dafür sind doch reguläre Ausdrücke ideal. r"\d+"
Antworten