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

Python提取JSON文件名数字最大值时列表转整型报错如何解决

报错根源

  • re.findall() 执行后返回的是所有匹配结果组成的列表,就算文件名里只有1个数字,返回值也是[数字字符串]的格式。你直接把每个返回的列表塞进numlist,会导致numlist变成二维嵌套列表,用max()取出的最大值还是列表类型,自然无法传入int()做转换。
  • 以下默认你需要取文件名中第一个数字段做大小比较,如果你的文件名存在多段数字,可自行调整取值逻辑。

修正后可运行代码

import glob
import re

numlist = []
for file in glob.glob("*.json"):
    num_strs = re.findall(r"\d+", file)
    # 跳过不含数字的文件,避免索引报错
    if num_strs:
        # 提前转成int存入列表,后续直接取max即可
        numlist.append(int(num_strs[0]))

# 避免无符合条件文件时max报错
if numlist:
    high_int = max(numlist)
    print(f"提取到的最大数值为:{high_int}")
else:
    print("未找到文件名含数字的JSON文件")

额外优化说明

  • 原代码中的os.chdir(os.getcwd())属于无效操作,等价于把当前工作目录切换到当前工作目录,无实际作用可以直接删除。
  • 如果你需要取文件名中所有数字拼接后的整数值做比较,把num_strs[0]替换为''.join(num_strs)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:27:01