You need to enable JavaScript to run this app. Python逐行读取文件后如何通过split()将行转为整数列表
优惠活动
大模型
产品
解决方案
定价
更多

Python逐行读取文件后如何通过split()将行转为整数列表

代码调整方案

原代码的核心问题

  • 文件读取逻辑错误:readlines()会一次性读完所有文件内容,将其放在while True循环中时,第一次调用就已读取完全部内容,后续循环永远无法拿到有效行内容,空值判断的逻辑完全失效。
  • 字符串切分不兼容:使用split(' ')按单个空格切分时,源文件中连续出现多个空格的位置会切割出空字符串,后续转换为整数时会直接触发报错。
  • 类型缺失转换:切分得到的所有元素都是字符串类型,没有执行整数转换,无法生成目标整数列表。
  • 冗余逻辑破坏结构:切分完成后嵌套再次拆分的操作完全多余,会把单个数字元素拆成单字符的子列表,破坏读取结果的结构;定义了变量n = 0但全程没有使用,属于无意义代码。

调整后的可运行代码

def adjMatrixFromFile(file_path):
    int_line_list = []
    # 用上下文管理器打开文件,自动处理文件资源关闭
    with open(file_path, 'r') as f:
        # 逐行迭代文件对象,无需手动维护读取位置
        for line in f:
            # 去掉行首尾的换行符、空白字符,过滤掉无内容的空行
            clean_line = line.strip()
            if not clean_line:
                continue
            # 不指定分隔符的split()会自动按任意连续空白拆分,自动兼容多空格、制表符场景
            str_number_list = clean_line.split()
            # 逐元素转换为整数,存入当前行的整数列表
            current_int_line = [int(num) for num in str_number_list]
            int_line_list.append(current_int_line)
    return int_line_list

# 调用方式保持不变
print(adjMatrixFromFile("file"))

运行输出结果

针对你提供的源文件内容,代码执行后会得到符合要求的嵌套整数列表:

[[5], [0, 1], [1, 2, 1, 2, 1, 3, 1, 3, 1, 4], [2, 3], [3, 0], [4, 0, 4, 2]]

如果后续需要基于这个结果生成邻接矩阵,可以直接取第一行的数值作为矩阵维度,后续每两个相邻整数为一条边的两个端点,在矩阵对应位置赋值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 11:57:03