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

如何读取特定格式文本文件并生成指定结构的嵌套列表?

问题描述

需要读取一个文本文件并将内容转换为嵌套列表,文本文件格式如下:

Frank Smith
5 5 0 0 100 15
Steven Jones
12 0 6 6 10 6
Barry Player
6 2 0 4 20 10
Scott Morrison
7 4 0 3 300 15
Tim Mcgrath
3 0 2 1 50 1

期望得到的嵌套列表格式:

a_list = [['Frank Smith', 5, 5, 0, 0, 100, 15],['Steven Jones', 12, 0, 6, 6, 10, 6],['Barry Player', 6, 2, 0, 4, 20, 10],['Scott Morrison', 7, 4, 0, 3, 300, 15],['Tim Mcgrath', 3, 0, 2, 1, 50, 1]]

尝试的代码无法保留姓名为单个元素,且所有内容都是字符串类型:

a_file = open("list.txt", "r")

list_of_lists = []

for line in a_file:
  stripped_line = line.strip()
  line_list = stripped_line.split()
  list_of_lists.append(line_list)

a_file.close()

print(list_of_lists)

解决方案

原代码的问题在于逐行处理时没有将姓名行与数字行配对,且未将数字字符串转为整数。可以按两行一组读取文件内容,修正后的代码如下:

list_of_lists = []

with open("list.txt", "r") as a_file:
    # 按两行一组读取内容,直到文件结束
    while True:
        name_line = a_file.readline()
        nums_line = a_file.readline()
        # 任意一行为空则终止循环
        if not name_line or not nums_line:
            break
        # 处理姓名,去除首尾空白字符
        name = name_line.strip()
        # 处理数字,分割后转换为整数类型
        nums = list(map(int, nums_line.strip().split()))
        # 将姓名和数字组合成子列表并添加到总列表
        list_of_lists.append([name] + nums)

print(list_of_lists)

这段代码的核心逻辑:

  • 用with语句自动管理文件开闭,避免资源泄漏
  • 成对读取姓名行和数字行,确保每组数据对应
  • 保留姓名为单个字符串元素,将数字批量转为整数
  • 组合每组数据为子列表,最终生成符合要求的嵌套列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 07:15:42