python中的最佳匹配算法

时间:2016-08-08 09:35:11

标签: python algorithm search

在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)。

1 个答案:

答案 0 :(得分:-1)

词典是实现这一目标的最简单方法。见下面的解决方案:

  1. 转换
  2. 123 ABC

    1234 DEF

    1235 GHI

    124 JKL

    1241 MNO

    至{1241:'MNO',1234:'DEF',123:'ABC',124:'JKL',1235:'GHI'}

    1. 使用国家/地区代码阅读CDR文件,然后在字典中搜索
    2. 如果找不到代码,请删除单位并重新搜索。
    3. 仍然没有找到 - 打印'找不到匹配'
    4. 以下是相同的代码 -

      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'