Проблема в коде

Ниже код который выводит название столбца и идентификационный номер строки в которой неправильные значения. Столбцы скрипт проверяет только те в которых есть предустановленные значения (domain)

fc = 'D:\Arcgis\New Personal Geodatabase.mdb\TEST'
domain_2 = arcpy.da.ListDomains("D:\Arcgis\New Personal Geodatabase.mdb")
field_1 = 'ID_COD'
fields = arcpy.ListFields(fc)
cursor = arcpy.SearchCursor(fc)

for field in fields:
    if field.domain:
        print field.name
        for domain in domain_2:
            if field.domain == domain.name:
                for val in domain.codedValues.keys():
                    a=set()
                    a.add(val)
                    for row in cursor:
                        b=row.getValue(field.name)
                        if b not in a:
                            print (row.getValue(field_1))

Итогом работы является список: Название столбца и идентификационный номер строки где находится неправильно заполненная ячейка

STATUS
1111111
2222222
COMPANY_MANAGER
COMPANY

Однако нормально отрабатывает только первый столбец а два других выводит только название. В чем может быть проблема


Ответы (1 шт):

Автор решения: Grechkin 26
fc = 'D:\Arcgis\New Personal Geodatabase.mdb\TEST'
domain_2 = arcpy.da.ListDomains("D:\Arcgis\New Personal Geodatabase.mdb")
field_1 = 'ID_COD'
fields = arcpy.ListFields(fc)
a=set() 
for field in fields:
     cursor = arcpy.SearchCursor(fc,fields)
     if field.domain:
         print field.name
         for domain in domain_2:
             if field.domain == domain.name:
                 for val in domain.codedValues.keys():
                    a.add(val)
                 for row in cursor:
                     if row.getValue(field.name) not in a:
                         print (row.getValue(field_1))
→ Ссылка