如何将含逗号与空格分隔整数的TXT文件转为指定格式整数列表?
问题描述
我有一个存储整数的TXT文件,部分整数以逗号分隔,部分以空格分隔,文件内容如下:
7,4,9,5,11,17,23,2,0,14,21,24,10,16,13,6,15,25,12,22,18,20,8,19,3,26,1 22 13 17 11 0 8 2 23 4 24 21 9 14 16 7 6 10 3 18 5
需要生成两个列表:
- 一个存储第一行的逗号分隔整数
- 另一个存储其余行的子列表(每行空格分隔整数为一个子列表)
预期结果:
list_1 = [7,4,9,5,11,17,23,2,0,14,21,24,10,16,13,6,15,25,12,22,18,20,8,19,3,26,1] list_2 = [[22, 13, 17, 11, 0], [8, 2, 23, 4, 24], [21, 9, 14, 16, 7], [6, 10, 3, 18, 5]]
尝试过以下代码,但因分隔符不同报错,无法读取逗号分隔数值:
b=[[int(x) for x in i.split()] for i in open("file", "r").readlines()]
解决方案
可以分步骤处理文件内容,分别适配两种分隔符:
- 读取文件所有行,过滤掉空行
- 单独处理第一行,用逗号分割后转成整数列表
- 处理剩余行,每行用空格分割(
split()会自动处理多个空格)后转成整数子列表
完整代码如下:
# 读取文件并过滤空行 with open("file.txt", "r") as f: lines = [line.strip() for line in f if line.strip()] # 处理第一行(逗号分隔) list_1 = [int(num) for num in lines[0].split(',')] # 处理剩余行(空格分隔) list_2 = [] for line in lines[1:]: # split()默认按任意空白符分割,自动忽略多个空格 sub_list = [int(num) for num in line.split()] list_2.append(sub_list) # 验证结果 print("list_1 =", list_1) print("list_2 =", list_2)
代码说明
- 使用
with open(...)确保文件正确关闭,避免资源泄漏 line.strip()和if line.strip()过滤掉空行,避免处理无效内容- 第一行用
split(',')按逗号分割,剩余行用split()按任意空白符分割(包括多个空格、制表符等),适配不同的空格数量 - 所有分割后的字符串都通过
int()转成整数类型
内容的提问来源于stack exchange,提问作者Willem12345
相关产品推荐
相关产品推荐

