difflib.SequenceMatcher没有返回唯一比率

时间:2014-12-18 15:51:52

标签: python gis arcpy difflib sequencematcher

我正在尝试比较2个街道网络,当我运行此代码时,它返回的比率为.253529 ...我需要它来比较每一行以获得唯一值,以便我可以查询不匹配的街道。我能做什么让它返回每行的唯一比率值?

# Set local variables
inFeatures = gp.GetParameterAsText(0)
fieldName = gp.GetParameterAsText(1)
fieldName1 = gp.GetParameterAsText(2)
fieldName2 = gp.GetParameterAsText(3)
expression = difflib.SequenceMatcher(None,fieldName1,fieldName2).ratio()

#执行CalculateField     arcpy.CalculateField_management(inFeatures,fieldName,expression," PYTHON_9.3")

1 个答案:

答案 0 :(得分:0)

如果您知道两个文件的行数始终完全相同,那么这样的简单方法就可以了:

ratios = []

with open('fieldName1', 'r') as f1, open('fieldName2', 'r') as f2:
    for l1, l2 in zip(f1, f2):
        R = difflib.SequenceMatcher(None,l1,l2).ratio()
        ratios.append((l1, l2, R))

这将产生一个像这样的元组列表:

[("aa", "aa", 1), ("aa", "ab", 0.5), ...]

如果你的文件大小不同,你需要找到一些匹配线路的方法,或以其他方式处理它