在python中最佳匹配的最佳实现应该是什么。
我有一个txt文件,其中包含一些国家/地区代码,例如
123 ABC
1234 DEF
1235 GHI
124 JKL
1241 MNO
这个txt文件很大(13500条记录)我只是放了一些样本。
此外,我有一些CDR文件,我在每个记录(行)中获得国家代码(数字),我想将其转换为国家/地区名称。
现在我所说的最佳匹配是,说CDR记录包含国家代码“1234”然后国家名称将是“DEF”,如果是“1235”,国家名称将是“GHI”但是如果国家代码是“1236”然后完美匹配失败,它应该回到“ABC”,因为“123”可用。
我不知道这种搜索是否有标准名称。 喜欢正则表达式中的贪婪搜索。
这种搜索的最佳实现是什么,因为CDR文件非常大(高达25GB)。
答案 0 :(得分:-1)
词典是实现这一目标的最简单方法。见下面的解决方案:
123 ABC
1234 DEF
1235 GHI
124 JKL
1241 MNO
至{1241:'MNO',1234:'DEF',123:'ABC',124:'JKL',1235:'GHI'}
以下是相同的代码 -
country_name = {}
with open('U:\countrynames.csv','r') as f:
for line in f:
linesplit = line.split()
country_name[int(linesplit[0])] = linesplit[1]
with open('U:\countrycodesCDR.csv','r') as f:
for line in f:
country_code = int(line.strip())
while country_code != 0:
if country_code in country_name:
print country_name[country_code]
break
else:
country_code /=10
else:
print 'No match found'