有一个csv文件,其中包含前缀列表,用于根据该文件对电话号码进行分类。这是一个例子前缀.csv. 这个文件有近2000行。在
3511891,PORTUGAL-MOBILE (VODAFONE)
3511693,PORTUGAL-MOBILE (OPTIMUS)
3511691,PORTUGAL-MOBILE (VODAFONE)
34,SPAIN-FIXED
3469400,SPAIN-MOBILE (MVNO)
3469310,SPAIN-MOBILE (MVNO)
3469279,SPAIN-MOBILE (MVNO)
3469278,SPAIN-MOBILE (MVNO)
3469277,SPAIN-MOBILE (MVNO)
3469276,SPAIN-MOBILE (MVNO)
34673,SPAIN-MOBILE (VODAFONE)
243820000006,CONGO DEMOCARTIC REPUBLIC-SPECIAL SERVICES
243820000005,CONGO DEMOCARTIC REPUBLIC-SPECIAL SERVICES
243820000004,CONGO DEMOCARTIC REPUBLIC-SPECIAL SERVICES
88213200361,EMSAT-SPECIAL SERVICES
67518497899,PAPUA NEW GUINEA-SPECIAL SERVICES
56751975883,CHILE-SPECIAL SERVICES
56751975334,CHILE-SPECIAL SERVICES
56731974707,CHILE-SPECIAL SERVICES
另一方面,有一个巨大的日志文件,包括数千行。日志格式如下:
^{pr2}$因此,我必须提取callee_num
后面的电话号码,然后将其与所有前缀逐个进行比较,以发现callee_num
之后的相关号码的国家代码是什么。在这个例子中,电话号码是34673809195
,所以提取这个号码,转到前缀.csv并逐行检查是否有合适的前缀。在
1)first time '3' from 34673xxxx
2)then 4
3) then 6
4) then 7
....
所有这些过程都必须对的每一行重复前缀.csv,最后在这一行34673,SPAIN-MOBILE (VODAFONE)
,数字是匹配的。假设数字而不是34673
是34670
,在检查了所有行之后,没有任何与该数字匹配的内容,因此应该可以保留最后一个匹配的前缀.csv它是34
,并返回{
我想知道在最短时间内完成这些过程的最佳算法是什么。如果我需要在前缀之前排序还是只使用字典?我如何管理每件事以获得高效的代码?搜索算法应该如何工作?递归函数是不是好主意?或者,如果在python中有一些实现良好的库,请推荐它。
感谢您提供任何解决方案。在
看看prefix tree (Trie)数据结构。在
在扫描树的过程中,始终记住最后的最佳结果(记住34,同时检查34个***节点)
Python中有许多尝试的实现
相关问题 更多 >
编程相关推荐