Heim >Backend-Entwicklung >Python-Tutorial >Fehler beim Aktualisieren der Liste während der Schleife in Python
Warum wird die Liste „Spans“ nie aktualisiert? Ich verstehe nicht, warum der Code in einer Endlosschleife hängen bleibt.
pdf: https://www.sil.org/system/files/reapdata/62/99/18/62991811720566250411942290005522370655/40337_02.pdf
Beispiel „Blockieren“: https://jumpshare.com/s/y393jobqjfiye51gkexn
import fitz doc = fitz.open("cubeo/40337_02.pdf") page = doc[3] blocks = page.get_text("dict", flags = fitz.TEXTFLAGS_TEXT)["blocks"] for block in blocks: entries = [] if len(block["lines"]) > 3: # ignora legendas e número de página for line in block["lines"]: spans = [] for span in line["spans"]: spans.append({"text": span["text"].replace("�", " "), "size": int(span["size"]), "font": span["font"]}) # While there are spans left while True: # Delimits where an entry starts entry_first_position = None for i, span in enumerate(spans): if span["font"] == "Sb&cuSILCharis-Bold": entry_first_position = i break if entry_first_position is not None: # Delimits where an entry ends entry_last_position = None for i, span in enumerate(spans[entry_first_position:], start=entry_first_position): if span["font"] == "Sb&cuSILCharis-Bold": entry_last_position = i break if entry_last_position is not None: # Whole entry is added as a list append_list = spans[entry_first_position:entry_last_position] entries.append(append_list) spans = spans[:entry_first_position] + spans[entry_last_position:] else: break else: break print(spans)
Was ich erwarte, ist, dass print(spans) „[]“ ausgibt. Der Code erreicht diesen Punkt jedoch nie.
for i, span in enumerate(spans[entry_first_position:], start=entry_first_position):
wird nicht übersprungen span["font"] == "sb&cusilcharis-bold"
的第一个匹配项。所以 entry_last_position == entry_first_position
, nichts wird gelöscht und man steckt in einer Endlosschleife fest. Ändern Sie es in
for i, span in enumerate(spans[entry_first_position+1:], start=entry_first_position+1):
Also beginnt die Suche nach der nächsten Position in der Liste
Das obige ist der detaillierte Inhalt vonFehler beim Aktualisieren der Liste während der Schleife in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!