1
我正在尋找可以幫助我從地址獲取國家的python包。Python包:獲取基於地址的國家(非ip)
我用pycountry,但如果我在地址的國家,我只能用,但我不知道,做什麼,如果我有恩:
「喬治城,TX」,「聖達菲,新墨西哥州「,」紐倫堡「,」Haarbergstr。67 D-99097愛爾福特「。
我不知道該怎麼辦,當我沒有國家的地址,並沒有明確的模式。
我正在尋找可以幫助我從地址獲取國家的python包。Python包:獲取基於地址的國家(非ip)
我用pycountry,但如果我在地址的國家,我只能用,但我不知道,做什麼,如果我有恩:
「喬治城,TX」,「聖達菲,新墨西哥州「,」紐倫堡「,」Haarbergstr。67 D-99097愛爾福特「。
我不知道該怎麼辦,當我沒有國家的地址,並沒有明確的模式。
似乎geopy可以做到這一點比較容易。從documentation採用的示例:
>>> import geopy
>>> from geopy.geocoders import Nominatim
>>> gl = Nominatim()
>>> l = gl.geocode("Georgetown, TX")
# now we have l = Location((30.671598, -97.6550065012, 0.0))
>>> l.address
[u'Georgetown', u' Williamson County', u' Texas', u' United States of America']
# split that address on commas into a list, and get the last item (i.e. the country)
>>> l.address.split(',')[-1]
u' United States of America'
我們知道了!現在,測試它的其它位置
>>> l = gl.geocode("Santa Fe, New Mexico")
l.address.split(',')[-1]
u' United States of America'
>>> l = gl.geocode("Nuremberg")
>>> l.address.split(',')[-1]
u' Deutschland'
>>> l = gl.geocode("Haarbergstr. 67 D-99097 Erfurt")
>>> l.address.split(',')[-1]
u' Europe'
所以,你可以在腳本中自動列表:
import geopy
from geopy.geocoders import Nominatim
geolocator = Nominatim()
list_of_locations = "Georgetown, TX" , "Santa Fe, New Mexico", "Nuremberg", "Haarbergstr. 67 D-99097 Erfurt"
for loc in list_of_locations:
location = geolocator.geocode(loc)
fulladdress = location.address
country = fulladdress.split(',')[-1]
print '{loc}: {country}'.format(loc=loc, country=country)
輸出:
Georgetown, TX: United States of America
Santa Fe, New Mexico: United States of America
Nuremberg: Deutschland
Haarbergstr. 67 D-99097 Erfurt: Europe
希望這有助於。
geopy在大多數情況下不起作用,例如寬度:「A.J. Tuck Co. Brookfield,Ct United States 06804-1814」。肯定是和美國的地址,但結果是沒有;這是工作,如果我刪除公司名稱和編號,但它並沒有幫助我,因爲我沒有一個清晰的模式,如公司名稱從地址 – user3541631
刪除字符串例如,已經在國家的字符串,可以你只是從字符串中提取國家?使用字符串分析,或正則表達式? – davedwards
1)是的,但這意味着我必須建立自己的國家名單及其名稱變體; - 我可以使用pycountry,但是 - > 2)如果我刪除國家形式的字符串,我也會收到沒有,所以1)不是主要問題,僅僅是一個例子; 3)與包裝本身無關,而是與服務有關的問題 - 我嘗試了更多的包裝,每個包裝都有不同的問題,並針對國家使用不同的名稱,所以回收更難; 4)Nominatim作爲響應時間最好,GoogleV3和雅虎收到了很多超時時間。 – user3541631