import Levenshtein #print(Levenshtein.distance("eesti riik", "eesti rik")) m=open("loc_new_names_freq.txt", encoding="utf-8").readlines() #m=open("loc_known_names_freq.txt", encoding="utf-8").readlines() m=[rida.split(";")[:3] for rida in m[1:]] m.sort(key=lambda rida: -int(rida[2])) m=list(filter(lambda rida: int(rida[2])>=5, m)) #print(m[-10:]) #print(len(m)) m2=open("kohanimed_eki/eeknab.dat", encoding="utf-8").readlines() m2=[r.split("|")[0].lower() for r in m2] m3=open("kohanimed_eki/mknab.dat", encoding="utf-8").readlines() m3=[r.split("|")[0].lower() for r in m3] def ette(m, mis): for nr in range(len(m)): if m[nr].endswith(" linn") or m[nr].endswith(" vabariik") or m[nr]==mis: abi=m.pop(nr) m.insert(0, abi) def otsiVastedEesti(koht): algused=[] lahedused=[] for kvaste in m2: if kvaste==koht: algused.append(kvaste) elif kvaste.startswith(koht) and len(kvaste)/len(koht)<3: algused.append(kvaste) if Levenshtein.distance(koht, kvaste) ==1: lahedused.append(kvaste) if len(koht)>5 and Levenshtein.distance(koht, kvaste) ==2: lahedused.append(kvaste) return algused+lahedused def otsiVastedValismaa(koht): algused=[] lahedused=[] for kvaste in m3: if kvaste==koht: algused.append(kvaste) elif kvaste.startswith(koht) and len(kvaste)/len(koht)<3: algused.append(kvaste) if Levenshtein.distance(koht, kvaste) ==1: lahedused.append(kvaste) if len(koht)>5 and Levenshtein.distance(koht, kvaste) ==2: lahedused.append(kvaste) return algused+lahedused f2=open("uued1c.csv", "w", encoding="utf-8") for rida in m: print(rida[:3]) v=otsiVastedEesti(rida[0]) v2=otsiVastedValismaa(rida[0]) v=v+v2 ette(v, rida[0]) # print(rida[0], rida[2], v[0] if len(v) else "", ";".join(v[1:]),v2[0] if len(v2) else "", ";".join(v2[1:]), sep=",", file=f2) print(rida[0], rida[2], v[0] if len(v) else "", ";".join(v[1:]), sep=",", file=f2) f2.flush() f2.close()