Python 如何根据位置字段将用户分为不同的国家/地区

Python 如何根据位置字段将用户分为不同的国家/地区,python,xml,geolocation,elementtree,Python,Xml,Geolocation,Elementtree,大多数web应用程序都有一个位置字段,用户可以在其中输入自己选择的位置 您如何根据输入的位置将用户分为不同的国家/地区 例如,我使用了users.xml的堆栈溢出转储并提取了用户名、信誉和位置: ['Jeff Atwood', '12853', 'El Cerrito, CA'] ['Jarrod Dixon', '1114', 'Morganton, NC'] ['Sneakers OToole', '200', 'Unknown'] ['Greg Hurlman', '5327', 'Hal

大多数web应用程序都有一个位置字段,用户可以在其中输入自己选择的位置

您如何根据输入的位置将用户分为不同的国家/地区

例如,我使用了
users.xml的堆栈溢出转储并提取了用户名、信誉和位置:

['Jeff Atwood', '12853', 'El Cerrito, CA']
['Jarrod Dixon', '1114', 'Morganton, NC']
['Sneakers OToole', '200', 'Unknown']
['Greg Hurlman', '5327', 'Halfway between the boardwalk and Six Flags, NJ']
['Power-coder', '812', 'Burlington, Ontario, Canada']
['Chris Jester-Young', '16509', 'Durham, NC']
['Teifion', '7024', 'Wales']
['Grant', '3333', 'Georgia']
['TimM', '133', 'Alabama']
['Leon Bambrick', '2450', 'Australia']
['Coincoin', '3801', 'Montreal']
['Tom Grochowicz', '125', 'NJ']
['Rex M', '12822', 'US']
['Dillie-O', '7109', 'Prescott, AZ']
['Pete', '653', 'Reynoldsburg, OH']
['Nick Berardi', '9762', 'Phoenixville, PA']
['Kandis', '39', '']
['Shawn', '4248', 'philadelphia']
['Yaakov Ellis', '3651', 'Israel']
['redwards', '21', 'US']
['Dave Ward', '4831', 'Atlanta']
['Liron Yahdav', '527', 'San Rafael, CA']
['Geoff Dalgas', '648', 'Corvallis, OR']
['Kevin Dente', '1619', 'Oakland, CA']
['Tom', '3316', '']
['denny', '573', 'Winchester, VA']
['Karl Seguin', '4195', 'Ottawa']
['Bob', '4652', 'US']
['saniul', '2352', 'London, UK']
['saint_groceon', '1087', 'Houston, TX']
['Tim Boland', '192', 'Cincinnati Ohio']
['Darren Kopp', '5807', 'Woods Cross, UT']
使用以下Python脚本:

from xml.etree import ElementTree

root = ElementTree.parse('SO Export/so-export-2009-05/users.xml').getroot()
items = ['DisplayName','Reputation','Location']

def loop1():
    for count,i in enumerate(root):
    det = [i.get(x) for x in items]
    print det
    if count>30: break

loop1()
把人们分成不同国家最简单的方法是什么?是否有现成的查找表可供我提供一个输出,说明
X
位置属于
Y
国家/地区


查找表不需要完全准确。通过在Google或Wolfram Alpha上查询位置字符串可以获得相当准确的答案。

强制用户指定国家,因为您必须处理歧义。这是正确的方法

如果这是不可能的,至少让你最好的猜测与他们的IP地址

例如,['Grant'、'3333'、'Georgia']

这是美国乔治亚州吗? 还是这是格鲁吉亚共和国

如果他们的IP地址显示在中亚或东欧的某个地方,那么很可能是格鲁吉亚共和国。如果是北美洲,机会很大,他们指的是美国乔治亚州


请注意,IP地址到国家/地区的映射并非100%准确,数据库需要定期更新。在我看来,太麻烦了。

您最好的选择是使用类似()的地理编码API

例如,将在响应的
CountryNameCode
-字段中返回国家

只有这一个位置字段,错误匹配的数量可能会相对较高,但可能已经足够好了


如果您有服务器日志,您还可以尝试使用IP地理编码器查找用户的IP地址(更多信息和指针)

只要大多数答案正确,一点错误就可以了。