difflib.SequenceMatcher не возвращает уникальное соотношение

Я пытаюсь сравнить две уличные сети, и когда я запускаю этот код, он возвращает соотношение.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, выражение, "PYTHON_9.3")

1 ответ

Решение

Если вы знаете, что оба файла всегда имеют одинаковое количество строк, такой простой подход будет работать:

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

Если ваши файлы имеют разные размеры, вам нужно найти какой-либо способ сопоставить строки или иным образом обработать его

Другие вопросы по тегам