Ich bin neu in Python und ich habe eine chaotische Datenbank aufgeräumt mit einer Kombination von Google verfeinern http://code.google.com/p/google-refine/ und Excel, aber ich denke, dass Python einen besseren Job machen kann, solange ich in der Lage bin, einige "Rezepte" zu bekommen Ich kann es wiederverwenden.Split-String-Elemente einer Liste mit mehreren Trennzeichen/Bedingungen. Jede gute Python-Bibliothek?
Eine Variation meines Problems ist die Inkonsistenz im Feld 'Location' der Datenbank. Etwa 95% der Daten haben das Format in der Liste Location1, das ich mit Python effizienter verarbeiten konnte als mit der Verwendung von Excel-Filtern. Ich suche jedoch nach einer Python-Bibliothek oder einem Python-Rezept, das es mir erlauben würde, mit allen Arten von Geo-Orten in der Datenbank zu arbeiten, vielleicht durch Definieren von Mustern innerhalb der Liste.
Vielen Dank im Voraus für Ihre Hilfe!
Location1=['Washington, DC','Miami, FL','New York, NY']
Location2=['Kaslo/Nelson area (Canada), BC','Plymouth (UK/England)', 'Mexico, DF - outskirts-, (Mexico),']
Location3=['38.206471, -111.165271']
# This works for about 95% of the data, basically US addresses on Location1 type of List
CityList=[loc.split(',',1)[0] for loc in Location1]
StateList=[loc.split(',',1)[1] for loc in Location1]
Ein Weg, um dieses Problem könnte sein, jeden Eintrag über einen Geocoder auszuführen, dann einen umgekehrten Geocoder, der Ihnen ein strukturiertes Ergebnis geben würde. Ich würde GeoNames für beide vorschlagen: http://www.geonames.org – arboc7
Verwenden Sie reguläre Ausdrücke, um jeden Eintrag an ein bestimmtes Format anzupassen, und schreiben Sie dann Code für jeden Fall. Dies setzt voraus, dass Sie mit der Mehrheit der abweichenden Daten mit einer überschaubaren Anzahl von separaten Ausdrücken umgehen können. –
Mit Regexen können Sie Gruppen von Elementen erfassen. Zum Beispiel: der Ausdruck "" (\ w +) \ W *, \ W * (\ w {2}) "' passt Eingaben wie "Spokane, WA" '. Mit den Capture-Gruppen in der Regex ergibt das 're'-Match-Objekt eine' groups() 'wie folgt' ("Spokane", "WA") '. –