在文本中快速搜索城市和国家的大列表

ahogeotagger的Python项目详细描述


地理标签

如果你有成千上万的文本段落,你想在其中搜索成百上千的搜索字符串,那么这个过程很快就会变得非常麻烦。这是一个非常相关和快速的搜索。您可以阅读有关算法here的更多信息。在

这段代码将python中的very efficient implementation of ahocorasick与预先绑定的城市、州和国家列表结合起来,在文本中标记位置。在

要求

  • Python 3.6或更高版本
  • pyahocorasick 1.4.0或更高版本

安装

通过PyPi使用PIP

pip install ahogeotagger

使用

现在的用法很简单。导入并初始化标记器,其中包含要搜索文本的城市数。城市按人口顺序排列(东京、纽约、墨西哥城等)。在

这些城市的数据已经从免费版本的simplemaps数据库中预填充,您可以找到here。在

^{pr2}$

或者,如果您不想使用内置的城市数据库,您可以提供自己的城市列表。该列表需要是一个元组列表,每个元组的值按以下顺序排列:

(id,城市,州,国家,iso2,iso3,人口,lat,lng)

idpopulation的类型是intlat和{}都是浮点数,其余的都是字符串。在

tagger.init(num_cities = 500, cities = [a,b,c])

其中a,b,c是上面描述的元组。在

要搜索文本是否包含位置,请按如下方式向搜索函数提供纯文本:

results = tagger.search('New york and London are are competing for tech talent')
print(results)

这将产生以下元组列表

[(0, 7, 'New York', 'New York', 'United States', 'US', 'USA', 19354922, 40.6943, -73.9249), 
 (13, 18, 'London', 'London, City of', 'United Kingdom', 'GB', 'GBR', 8567000, 51.5, -0.1167)]

每个元组总是按以下顺序包含值start_index(用于源字符串中的匹配)、end_indexcitystatecountryiso2iso3populationlatitudelongitude

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java不兼容类型:MainActivity无法转换为LifecycleOwner   java安卓是一种更有效的读取大文本文件的方法   java导出LWJGL本地人与项目?(IntelliJ IDEA)   JDK更新后,JavaJShell不再在下一行打印输出   父类对象上的继承Java比较子属性   Java:有没有一个容器可以有效地结合HashMap和ArrayList?   安卓 Java对象指针   java在annotationdriven Spring MVC应用程序中实现大气   java 安卓源代码构建应用找不到安卓supportv4。罐子   文件系统上的抽象层和Java中的jar/zip   java在水平滚动视图中添加多个图像?   java如何从firebase实时数据库中获取字符串数组   WIndows 10工作站上的java未满足链接错误   java命令在终端中工作,但在使用过程中出现“无结束引号”错误。执行官