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

如何提取文本文件每行指定位置的数字串为列表并解决相关报错

解决方法

错误原因

  1. 你代码中用range作为变量名接收了line.split()返回的列表,覆盖了Python内置的range函数,调用range(3,10)时触发*'list' object is not callable*报错。
  2. 提取子串的逻辑错误:你需要按字符位置取指定区间的内容,不需要用split拆分整行,直接用字符串切片即可。Python字符串切片为左闭右开规则,要取从0开始计数的第5到14位共10个字符,切片区间写为[5:15]即可。

完整实现代码

第一步:读取文件提取目标内容列表

num_str_lst = []
with open('k_d_m.txt', 'r', encoding='utf-8') as f:
    for line in f:
        # 提取第5到14位共10个字符
        target = line[5:15]
        num_str_lst.append(target)

# 验证提取结果
print(num_str_lst)

第二步:对提取内容做校验

你后续的校验逻辑需要遍历每个提取到的字符串执行,同时修正了原代码的缩进错误,以及增加了非数字字符的兼容处理:

nth = 2
for num_str in num_str_lst:
    # 将字符串每一位转为整数,非数字字符按0处理(可按需调整规则)
    num_lst = [int(c) if c.isdigit() else 0 for c in num_str]
    print(f"当前校验字符串:{num_str},转换后的数字列表:{num_lst}")
    odd_total = sum(num_lst[0::nth])
    even_total = sum(num_lst[1::nth])
    print(f"奇数位求和:{odd_total},偶数位求和:{even_total}")
    if odd_total - even_total in (0, 11):
        print("The number is ok")
    else:
        print("The number is not ok")

运行验证

以上代码运行后会先输出提取的目标字符串列表,再逐个输出每个字符串的校验结果,完全匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:24:08