2016-03-19 5 views
-1

Ich habe diesen Text:Python, was in meinem regulären Ausdruck falsch ist

1 Bedroom Apartment To Rent In Aldar Tower, Dubai Marina 

I "Aldar Tower" und "Dubai Marina"

Diese extrahieren möchten ist, was ich versucht:

areaAndBuilding = re.search("\* Rent In \s*", value) 
area = areaAndBuilding.split(",")[0] 
building = areaAndBuilding.split(",")[1] 

aber das Problem ist das areaAndBuilding ist immer None.

+0

Wenn Sie eine Regex-Frage haben, ist es hilfreich, sie als solche zu markieren. – MattDMo

Antwort

1

Hier ist eine andere Regex, die re.match statt re.search verwendet, weil man nur einmal anpassen wollen (search für mehrere Übereinstimmungen ist):

areaAndBuilding = re.match(".* Rent In (.*), (.*)", value) 

Dann können Sie Ihre gewünschten Elemente zugreifen re.group mit:

area = areaAndBuilding.group(1)  # Aldar Tower 
building = areaAndBuilding.group(2) # Dubai Marina 

In Ihrem Code war areaAndBuilding immer None, weil Ihre Regex falsch war, also gab es keine Übereinstimmung. Der beste Weg, um zu überprüfen, ob Ihre Regexes funktionieren, besteht darin, sie außerhalb von Python zu testen. Ich empfehle, Regex101 zu verwenden.

+0

warum 're'? Ich meine, du meinst 'areAndBuilding' in der Gruppenstatistik? –

+0

@michaelSalam Hoppla, ja; Ich werde das ändern –

+0

@michaelSalam Ich habe meinen Code geändert - funktioniert es für Sie? –