","(.*?) (Railway Station)
Regex: Extrahieren mehrere Teil, entspricht die Variante ignoriert
Ich brauche eine Station Stadt und Breite/Länge aus einer Liste von Rohdaten in folgendem Format zu extrahieren:
"22238","Flinders Street Railway Station (Melbourne City)","-37.8183051340585","144.966964346166"
"22239","North Melbourne Railway Station (West Melbourne)","-37.8063098353473","144.94151017321"
"22240","Footscray Railway Station (Footscray)","-37.8014134330439","144.902020057667"
"22241","Sunshine Railway Station (Sunshine)","-37.7885363319246","144.832878204953"
Der gewünschte Ausgang wobei:
Flinders Street
-37.8183051340585,144.966964346166
North Melbourne
-37.8063098353473,144.94151017321
Footscray
-37.8014134330439,144.902020057667
Sunshine
-37.7885363319246,144.832878204953
Ich bin nach ein paar Ratschläge, wie dies zu handhaben.
Mit ","(.*?) (Railway Station)
die Station Stadt extrahiert wird, aber es gibt zwei andere unerwünschte Begegnungen:
","Flinders Street Railway Station
Flinders Street
Railway Station
Im oben, wie könnte ich Flinders Street
allein Vorstellungen?
Zweitens, um den Breiten- und Längengrad abzurufen, sollte ich einen separaten Regex-Aufruf durchführen, oder ist das alles mit einem einzigen Suchmuster möglich?
Und schließlich, sollte ich die Zitate aus dem Breiten-/Längengrad mit Regex oder nachher in meinem Code entfernen, das Problem in zwei Schritte aufteilen.
Zum Beispiel von:
"-37.8183051340585","144.966964346166"
zu:
-37.8183051340585,144.966964346166
Alternativ, ich bin im falschen Winkel auf diesem Kommen und es wäre einfacher, den Text mit ,
als Trennzeichen zu spalten, sich dann auf die kleineren Teilstränge mit einem bestimmten Muster konzentrieren. Was sind deine Gedanken?
Was ist Ihre Sprache? Ich bin mir nicht sicher, ob die Verwendung von nur Regex effizient sein könnte. Ihre Daten scheinen CSV zu sein. Sie können also nur jede Zeile wiederholen, alle Komponenten der CSV-Datei abrufen (da sie durch "," getrennt sind) und das Vorhandensein des gesuchten Begriffs in der zweiten Komponente prüfen. Es wäre dann einfacher, Ihren lat/long nach Ihrem Wunschformat zu verketten. Es kann einfacher sein, den Code in ein paar Monaten zu lesen. – Larme
Die Sprache ist Python. Einverstanden, ich finde, dass Regex-Muster 5 Minuten nach dem Schreiben grundsätzlich nicht lesbar sind. –
Verwenden Sie 're.findall (r '", "(. *?) Bahnhof", Eingabe) ', oder wenn Sie' re.search' verwenden, greifen Sie mit 'matchObj.group (1)' auf den Wert der Gruppe 1 zu . –