python中的最佳匹配算法
python中最佳匹配的最佳实现应该是什么 我有一个txt文件,其中有一些国家代码映射,例如 代码名 123美国广播公司 1234 DEF 1235 GHI 124 JKL 1241 MNO 这个txt文件很大(13500条记录),我只是放了一些样本 此外,我还有一些CDR文件,在每个记录(行)中我都会得到国家代码(数字),我想将其转换为国家名称 现在我所说的最佳匹配是,假设CDR记录包含国家代码“1234”,那么国家名称将是“DEF”,如果是“1235”,那么国家名称将是“GHI”,但是如果国家代码是“1236”,那么完美匹配将失败,并且应该返回到“ABC”,因为“123”是可用的 我不知道这种搜索是否有一个标准名称。 就像正则表达式中的贪婪搜索一样python中的最佳匹配算法,python,algorithm,search,Python,Algorithm,Search,python中最佳匹配的最佳实现应该是什么 我有一个txt文件,其中有一些国家代码映射,例如 代码名 123美国广播公司 1234 DEF 1235 GHI 124 JKL 1241 MNO 这个txt文件很大(13500条记录),我只是放了一些样本 此外,我还有一些CDR文件,在每个记录(行)中我都会得到国家代码(数字),我想将其转换为国家名称 现在我所说的最佳匹配是,假设CDR记录包含国家代码“1234”,那么国家名称将是“DEF”,如果是“1235”,那么国家名称将是“GHI”,但是如果国
什么是这种搜索的最佳实现,因为CDR文件非常大(高达25GB)。字典是实现这种搜索的最简单方法。请参阅以下解决方案:
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'
近似匹配有多种方法。什么对你“最好”取决于你的标准,你没有透露。投票结束,因为范围太广;也可能不清楚,或主要基于意见。有关详细信息,请参阅。粘贴您在此处尝试的代码。@Trimax--我还没有编写相同的代码。我只是在想办法。到目前为止,我想到的是(按国家代码)将txt文件内容排序到元组列表中。然后在列表中搜索完整的国家/地区代码,如果匹配失败,则再次搜索列表,删除最后一位,依此类推。还有更好的办法吗?@triplee——我还不知道我在这里没有透露哪些信息。我把问题缩短了,以最好的方式解决这个问题。好吧,我理解,你需要处理两个文件:一个,国家代码的映射;二是源数据。将映射文件放入字典中,然后迭代源数据并匹配字典中的country conde。