为什么列表“spans”从未更新?我不明白为什么代码会陷入无限循环。
pdf:https://www.sil.org/system/files/reapdata/62/99/18/62991811720566250411942290005522370655/40337_02.pdf
“块”示例: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)
我期望的是 print(spans) 输出“[]”。然而,代码永远不会达到这一点。
正确答案
for i, span in enumerate(spans[entry_first_position:], start=entry_first_position):
不会跳过 span["font"] == "sb&cusilcharis-bold"
的第一个匹配项。所以 entry_last_position == entry_first_position
,没有任何内容被删除,并且您陷入了无限循环。将其更改为
for i, span in enumerate(spans[entry_first_position+1:], start=entry_first_position+1):
因此它从列表中的下一个位置开始查找
以上就是在 Python 中循环时更新列表时出错的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756