在 Python 中循环时更新列表时出错
短信预约 -IT技能 免费直播动态提醒
问题内容
为什么列表“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
在 Python 中循环时更新列表时出错
下载Word文档到电脑,方便收藏和打印~
下载Word文档
猜你喜欢
在 Python 中循环时更新列表时出错
问题内容为什么列表“spans”从未更新?我不明白为什么代码会陷入无限循环。pdf:https://www.sil.org/system/files/reapdata/62/99/18/6299181172056625041194229
2024-02-22
在 Python 中迭代列表时从列表中删除项目时出现奇怪的结果
问题内容我有这段代码:numbers = list(range(1, 50))for i in numbers:if i 但是,我得到的结果是:[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 21, 22,
2024-02-09
2024-04-02
2023-07-06
在java 中使用序列化时出现NotSerializableException报错如何解决
今天就跟大家聊聊有关在java 中使用序列化时出现NotSerializableException报错如何解决,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。java 中序列化NotS
2023-05-31
在 Pygame 中使用自定义属性更新矩形时出现问题
问题内容我正在调试我的一个程序,我试图将自定义变量分配给矩形以更新其位置。这是我的代码:import os ; os.environ['PYGAME_HIDE_SUPPORT_PROMPT']='False'import pygam
2024-02-09
在python中写入文件时出现错误如何解决
在python中写入文件时出现错误如何解决?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数
2023-06-14
在嵌套文件夹 python 中添加代码时 Heroku 出错
问题内容我有一个基本的 heroku 应用程序,如果我的主应用程序文件中不包含 from src.rtctokenbuilder2 import rtctokenbuilder, role_publisher, time ,该应用程序运行
2024-02-06
2023-10-05
在网页上的选择器中显示选项时出现问题:循环 {{ range }} 的数据未在 Go 模板中传递
在网页开发过程中,有时会遇到一些问题,比如在使用选择器时出现了一些显示选项的问题。其中一个常见问题是循环数据未在Go模板中传递。这个问题可能会导致选择器无法正确显示选项。为了解决这个问题,我们需要对Go模板中的数据传递进行检查和调整。在本文
2024-02-08
在Python中使用print输出时,出现UnicodeEncodeError错误,错误提示为“‘gbk‘ codec can‘t encode character ‘\u2022‘ in posit
2023-09-08
python 中的 cupy 库中的 amax 和 max 函数在使用只有一列或只有一行的矩阵时是否会出错?
问题内容我尝试使用 cupy 进行 gpu 加速来实现用于机器学习和图像分类的 softmax 激活函数。我观察到,对于形状为 nx1 或 1xn 的数组,cupys max 函数会输出错误。然而,对于 nxa 的所有其他情况(其中 n
2024-02-06
SQLServer 错误 617 尝试对数据库 ID %d 中的对象 ID %ld 的描述符进行解哈希运算时,在哈希表中没有找到该描述符。 工作表缺少条目。 请重新运行查询。 如果涉及到游标,请关闭游
详细信息 Attribute 值 产品名称 SQL Server 事件 ID 617 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 NODESHASH 消息正文 ...
2023-11-05