Есть сценарий, в котором,
- Скажем, есть SpreadsheetA, который содержит некоторые детали.
- А в SpreadsheetA у меня когда-нибудь будет путь к другой SpreadsheetB, скажем SpreadsheetBкоторая содержит детали, аналогичные SpreadSheetA, и внутренне может содержать ссылки на другие.
- Создан код, который анализирует SpreadsheetA и загружает данные в глобальный массив. Когда он повторяется, он перебирает строки / столбец.
- Но возможно ли написать этот код синтаксического анализа и выполнить их рекурсивно? такой, что он снова вызывает тот же код для анализа внутренней таблицы и т. д.?
Потому что я не уверен, как играть с номерами строк / столбцов и т. д., и как это происходит, когда это происходит. вещи рекурсивно?
Пожалуйста, предоставьте свой вклад! Спасибо!
ОБНОВЛЕНИЕ: фрагмент кода, который я пробую.
def parse_sheet(self, <sheetname>):
for n in range (2, max_row):
# This if condition looks if there is a link to another Sheet
if (sheet.cell(row=n, column=1).value != None and sheet.cell(row=n, column=11).value != None):
# Get Sheet name
self.parse_sheet(<sheet_name>)
elif (sheet.cell(row=n, column=1).value != None and sheet.cell(row=n, column=11).value == None):
# continue parsing the on-going sheet.
Комментарий к выполнению потока:
- Код начал синтаксический анализ первого листа, т.е. SheetA.
- Сначала он переходит к циклу elif и начинает синтаксический анализ первого листа - SheetA.
- Когда встречается ссылка на другой лист, выполняется цикл if. На этом шаге он рекурсивно вызывает ту же функцию снова с новым листом.
- Код смог проанализировать первые несколько строк в SheetA, затем перешел к SheetB, завершил анализ.
- НоУ меня была ссылка на другой лист в SheetB. Но код не смог ни проанализировать этот файл / ни вызвать его рекурсивно.
- Но он продолжал завершать остальные строки для анализа в SheetA.