2017-12-13 1 views
1

Ich möchte Orte Namen wie diese analysieren:Parse Text mit Python RegEx Gruppen mit Gruppen Reihenfolge ändern

à : Paris (France) 

Aber oft trifft es einen Ort in den USA wie diese

à : Boston (MA) (États-Unis) 

ich versucht, dies zu analysiere es:

place='à : (?P<city>.+) (\((?P<country>.+)\)|(\((?P<state>.+)\) \((?P<country>.+)\)))' 

Aber es scheint nicht zu funktionieren und es geht über mein derzeitiges Verständnis von Anfänger.

Wie geht das?

Antwort

2

Sie können die Statusgruppe optional machen den quantifier mit ?:

à : (?P<city>\S+) (?:\((?P<state>\S+)\))?\((?P<country>\S+)\) 
#     ^^^     ^^ 

die demo See.

In diesem Fall wird es beide überein:

à : (?P<city>\S+) \((?P<state>\S+)\) \((?P<country>\S+)\) 

und

à : (?P<city>\S+) \((?P<country>\S+)\)