Regulärer Ausdruck in Python: String mit Punkt auftrennen

Tüttemann

Cadet 4th Year
Registriert
Jan. 2016
Beiträge
102
Hallo,

ich habe in Python einen String, der wie nachfolgend aussieht:

Code:
string = "nextval('schema_name.sequenz_name'::regclass)"

Aus diesem String möchte ich den Namen des Schemas und der Sequenz extrahieren. Das klappt soweit mit
Code:
re.findall(r"'(.*?)'", string)[0]
, woraus sich die Ausgabe
Code:
schema_name.sequenz_name
ergibt. Allerdings möchte ich diese Ausgabe noch weiter in
Code:
schema_name
und
Code:
sequenz_name
auftrennen und das jeweilige Ergebnis in eine Variable schreiben. Wie lässt sich diese Aufgabe clever lösen?

Vielen Dank!
 
Schau dir mal die string.split()-Methode ab. In dieser Funktion kannst du den Delimiter - in deinem Fall '.' - definieren und dann kriegst du die zwei Begriffe einzeln zurück.

Edit:

Hier der Auszug aus der Dokumentation

https://www.tutorialspoint.com/python/string_split.htm
 
Code:
import re
string = "nextval('schema_name.sequenz_name'::regclass)"
schema, sequenz = re.findall("(?:(?<=nextval\(')[^\.]*)|(?<=\.).*(?=')", string)
print(schema, sequenz)
schema_name sequenz_name
 
Zorkarak schrieb:
Schau dir mal die string.split()-Methode ab.

Code:
print seq_name.split('.')[0]
print seq_name.split('.')[1]

Danke, das funktioniert soweit und ist auch einfach zu verstehen!
Ergänzung ()

0x8100 schrieb:
Code:
import re
string = "nextval('schema_name.sequenz_name'::regclass)"
schema, sequenz = re.findall("(?:(?<=nextval\(')[^\.]*)|(?<=\.).*(?=')", string)
print(schema, sequenz)
schema_name sequenz_name

Danke, funktioniert wunderbar, sieht aber etwas komplizierter aus.
Ergänzung ()

Yuuri schrieb:
Sieh dir Capture Groups an, der Übersichtlichkeit halber Named Capturing Groups.

Ebenfalls danke, ich behalte das mal im Hinterkopf!
 
Zuletzt bearbeitet:
Zurück
Oben