Python-вставка значений из внутреннего цикла с значениями из внешнего цикла в таблице

У меня есть скрипт, который анализирует текст в каждой записи таблицы/поля и вставляет эти значения в поле/записи другой таблицы. Вот пример анализируемого текста (из «Field1»):

Название Из Нескольких Слов (0/24.56) Имя Нескольких Words2* (96/24.56) Имя Нескольких Words3* (0) Имя Нескольких Words4* (96/12.58) Имя Нескольких Words5* (96/78.12) Название Нескольких Words6* (0/98.32) Название Нескольких Words7* (96/0) Имя Нескольких Words8* (0) Имя Нескольких Words9**

Вот сценарий:

import re, arcpy, sys

# Local variables:
Table2 = "D:Source_Data_Convert.gdbTable2"
RAW_Data = "D:Source_Data_Convert.gdbRAW_Data_Table2"

#Create Cursors and Insert Rows
insertcursor = arcpy.da.InsertCursor(Table2, ["Other_Stuff", "That_Stuff", "Some_More", "From", "To", "Num_One", "Num_Two", "Nums"])
with arcpy.da.SearchCursor(RAW_Data, ["Field1", "Other_Stuff", "That_Stuff", "Some_More"]) as searchcursor:
########  Start the SearchCursor Loop ###################   
        for row in searchcursor:
            try:
                Other_Stuff = row[1]
                That_Stuff = row[2]
                Some_More = row[3]
                listFrom = re.split(r'*s*(.*?)s*', row[0])
                print listFrom

                Nums = re.findall(r'(([^)]+))', row[0])
                for match in re.finditer(r'(([^)]+))', row[0]):
                    parts = match.group(1).split('/')
                    print parts
                    First_Num = parts[0]
                try:
                    Second_Num = parts[1]
                except IndexError:
                    #Second_Num = None
                    Second_Num = 0
                    print "First_Num, Second_Num: ", First_Num, Second_Num

                print "Parsing Successful"

############  Start the Insertcursor Loop ############          
                for n,Value in enumerate(match): #enumerate is essentially doing a count
                    insertcursor.insertRow((Other_Stuff, That_Stuff, Some_More, listFrom[n], listFrom[n+1], First_Num[n], Second_Num[n+1], Nums[n]))
                    print "Data Inserted"
            except:
                pass
            else:
                break

del insertcursor
del searchcursor
del row

Я могу получить значения, чтобы напечатать правильно, но я не могу, кажется, получить (2) значения из вложенного цикла, чтобы вставить с каждым (1) значением из внешнего цикла. Надеюсь, мой вопрос имеет смысл. В основном я пытаюсь заполнить (3) поля. Одно поле получает значения из внешнего цикла, два других поля получают значения (в результате разделения) из внутреннего цикла. Любая помощь была бы очень признательна. Спасибо.

1 ответ

  1. Скомпилируйте все, что вы хотите напечатать или обработать, в список словарных элементов. Таким образом, вы можете сгруппировать данные, которые хотите напечатать более легко.

    Таким образом, вы можете иметь что-то вроде этого:

    field_dict['firstField'] = someValue
    field_dict['secondField'] = someList
    field_dict['thirdField'] = someValue
    dict_list.append(field_dict) 
    

    Затем в конце вы можете просто выполнить цикл по списку и напечатать, как вы хотите, не будучи связанными вложенными циклами.