Python循环中基于TXT记录创建多个列表的实现疑问
批量拆分TXT记录为命名列表(Python实现)
问题背景
我有若干需要拆分的TXT文件,以项目中的data.txt为例,每条记录通过#分隔字段,文件包含4000+条记录。需要将每条记录拆分为独立命名的列表(如List1、List2),但Python不支持类似C/Bash的动态变量命名语法,寻求正确实现方式。
示例数据(data.txt)
2023-07-01 00:05:12#11111111111#0101107200#0055013565#3#724020 2023-07-01 00:23:15#22222222222#0101108700#0099000002#0#724020 2023-07-01 00:26:57#33333333333#0101062000#0099000029#0#724020 2023-07-01 01:33:31#44444444444#0101107100#0055013566#3#724020 2023-07-01 01:37:15#55555555555#0101107100#0055013566#3#724020
期望输出
List1 = ['2023-07-01 00:05:12', '11111111111', '0101107200', '0055013565', '3', '724020'] List2 = ['2023-07-01 00:23:15', '22222222222', '0101108700', '0099000002', '0', '724020'] # 以此类推生成对应4000+条记录的命名列表
已尝试的代码
单条记录拆分(可行)
List = open("data.txt").readlines() print(List[0]) lista1 = List[0].split("#") print(lista1)
错误的循环实现(Python不支持此语法)
# 错误示例:Python不允许动态生成类似lista{i}的变量名 for i in range(4000): lista{i} = List{[i]}.split("#") print(lista{i})
正确实现方案
方案1:使用字典存储(推荐)
Python中不建议动态创建全局变量,用字典存储所有拆分后的列表更规范,便于后续操作:
# 打开文件并读取所有行,同时过滤空行 with open("data.txt", "r") as f: records = [line.strip() for line in f if line.strip()] # 用字典存储拆分后的列表 record_dict = {} for idx, line in enumerate(records, start=1): # 按#拆分字段,自动去除每行末尾的换行符 split_list = line.split("#") record_dict[f"List{idx}"] = split_list # 可选:打印输出期望格式 print(f"List{idx} = {split_list}") # 后续可以通过record_dict["List1"]、record_dict["List2"]访问对应列表
方案2:动态生成全局变量(不推荐,仅满足命名需求)
如果必须生成List1、List2这类全局变量,可以通过globals()函数实现:
with open("data.txt", "r") as f: records = [line.strip() for line in f if line.strip()] for idx, line in enumerate(records, start=1): split_list = line.split("#") # 动态注册全局变量 globals()[f"List{idx}"] = split_list print(f"List{idx} = {split_list}") # 之后可以直接使用List1、List2等变量 print(List1)
内容的提问来源于stack exchange,提问作者memo lugo
相关产品推荐
相关产品推荐

