You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

页码长度计算报错TypeError: object of type 'int' has no len()求助

解决TypeError: object of type 'int' has no len() 页码解析报错

我来帮你排查这个问题,这个报错本质是你尝试对一个整数类型的变量调用len()方法——而整数根本没有这个方法,自然会报错。结合你的代码和需求,我整理了可能的原因和对应的解决办法:

可能的报错原因

1. 变量被意外覆盖成整数

你的代码里all_page_numbers初始是列表,但如果在循环过程中(或者其他地方)不小心把它重新赋值成了单个页码(比如写成all_page_numbers = page_number而不是all_page_numbers.append(page_number)),那它就从列表变成了整数。后续再对它调用len()(哪怕是转成字符串前),都会触发这个错误。

另外,如果你把page_number转换成了整数(比如加了int(page_number)),然后尝试直接对这个整数调用len()(比如想算页码的位数),也会报同样的错。

2. 错误的长度计算逻辑

看你的注释,你是想计算页面总数,但你写的是len(str(all_page_numbers))——这是把整个列表转成字符串后算字符长度,完全不是你要的“页面总数”。如果你误把代码写成len(all_page_numbers),而此时all_page_numbers又意外变成了整数,那肯定会报错。

对应的解决方法

先确认变量类型(排查第一步)

在报错代码前加一行打印,看看all_page_numbers到底是什么:

print(type(all_page_numbers), all_page_numbers)
length_of_page_numbers = len(str(all_page_numbers)) 

如果输出显示是<class 'int'>,那就是变量被覆盖了,接下来看下面的修复。

修复变量赋值错误

确保all_page_numbers始终是列表,循环里用append添加元素,别写错赋值语句:

all_page_numbers = [] 
for thematic_break in all_thematic_breaks: 
    # get_text返回的是字符串,先保留原类型,避免后续类型混淆
    page_number = thematic_break.previous_sibling.previous_sibling.previous_sibling.get_text(strip=True) 
    all_page_numbers.append(page_number)  # 这里一定要用append,别写成赋值

修正页面总数的计算逻辑

如果你要的是“页面总数”(也就是列表里有多少个页码),直接用列表的len()即可,不需要转成字符串:

# 这才是正确的页面总数计算方式
length_of_page_numbers = len(all_page_numbers) 
print(length_of_page_numbers)

如果要计算单个页码的位数

如果你是想算某个页码的字符长度(比如页码是"100",想知道长度是3),确保对字符串调用len():

for thematic_break in all_thematic_breaks: 
    page_number = thematic_break.previous_sibling.previous_sibling.previous_sibling.get_text(strip=True) 
    # 直接用原字符串算长度,哪怕是数字也没问题
    page_digit_length = len(page_number)
    print(f"页码 {page_number} 的位数是 {page_digit_length}")
    all_page_numbers.append(page_number) 

内容的提问来源于stack exchange,提问作者Vanya Vaid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:38:33