2014-12-18 2 views
-1

Я пытаюсь сравнить 2 уличные сети, и когда я запускаю этот код, он возвращает aa-отношение .253529 ... Мне нужно, чтобы сравнить каждую строку, чтобы получить уникальное значение, чтобы я мог запросить на улицах, которые не совпадают. Что я могу сделать, чтобы он возвращал уникальные значения отношения к каждой строке?difflib.SequenceMatcher не возвращает уникальное отношение

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

+0

Что вы хотите сказать? Что такое gp? – user823743

+0

Что вы подразумеваете под «уникальной ценностью»? Дайте нам пример желаемого результата – wnnmaw

+0

Я хочу, чтобы он дал мне значение индекса сходства между двумя названиями улиц. например, если это имя_файла1 является Broad Street, а полем 2 является Broad Street, то выход будет равен 1. где, если поле имя1 было Braod Sreet и имя поля 2 было Broad St, результат был бы ниже 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), ...] 

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