在日志文件中快速找到适合每个电话号码的前缀的算法?

2024-06-03 05:59:15 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个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),数字是匹配的。假设数字而不是3467334670,在检查了所有行之后,没有任何与该数字匹配的内容,因此应该可以保留最后一个匹配的前缀.csv它是34,并返回{}。在

我想知道在最短时间内完成这些过程的最佳算法是什么。如果我需要在前缀之前排序还是只使用字典?我如何管理每件事以获得高效的代码?搜索算法应该如何工作?递归函数是不是好主意?或者,如果在python中有一些实现良好的库,请推荐它。

感谢您提供任何解决方案。在


Tags: 文件csv电话号码数字mobilespecialthenchile