-1

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")

4

1 に答える 1

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), ...]

ファイルのサイズが異なる場合は、行を一致させる方法を見つけるか、それ以外の方法で処理する必要があります

于 2014-12-18T19:08:48.840 に答える