3
This is just a helper to generate useful data files. It isn't directly used
8
self.parse_codes_data()
10
def parse_codes_data(self):
11
lines = open('iso3166-1-a2.txt', 'rb').read().split('\n')
12
self.codes = dict([ a.split(' ', 1) for a in lines[:-1] ])
14
def get_country_code_from_name(self, guess_name):
17
for code, name in self.codes.items():
18
score = self.levenshtein(guess_name, name)
19
if score < best_score:
24
def levenshtein(self, a, b):
25
"Calculates the Levenshtein distance between a and b."
28
# Make sure n <= m, to use O(min(n,m)) space
33
for i in range(1,m+1):
34
previous, current = current, [i]+[0]*n
35
for j in range(1,n+1):
36
add, delete = previous[j]+1, current[j-1]+1
37
change = previous[j-1]
40
current[j] = min(add, delete, change)