Rumah > Artikel > pembangunan bahagian belakang > Ralat mengemas kini senarai semasa menggelung dalam Python
Mengapa senarai "span" tidak pernah dikemas kini? Saya tidak faham mengapa kod itu tersekat dalam gelung tak terhingga.
pdf: https://www.sil.org/system/files/reapdata/62/99/18/62991811720566250411942290005522370655/40337_02.pdf
Contoh "Sekat": 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)
Apa yang saya jangkakan ialah cetakan(span) mengeluarkan "[]". Walau bagaimanapun, kod itu tidak pernah sampai ke tahap ini.
for i, span in enumerate(spans[entry_first_position:], start=entry_first_position):
tidak dilangkau span["font"] == "sb&cusilcharis-bold"
的第一个匹配项。所以 entry_last_position == entry_first_position
, tiada apa yang dipadamkan dan anda terperangkap dalam gelung yang tidak terhingga. Tukar kepada
for i, span in enumerate(spans[entry_first_position+1:], start=entry_first_position+1):
Jadi ia mula melihat kedudukan seterusnya dalam senarai
Atas ialah kandungan terperinci Ralat mengemas kini senarai semasa menggelung dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!