如何读取特定格式文本文件并生成指定结构的嵌套列表?
问题描述
需要读取一个文本文件并将内容转换为嵌套列表,文本文件格式如下:
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
相关产品推荐
相关产品推荐

