如何用Python循环拆分文本文件中的代码与时分数据为列表项?
问题描述
我有一个名为“1011.txt”的文本文件,内容如下:
1011 7:30
1011 14:25
1011 8:00
1011 18:20
1011 7:45
1011 17:21
需要将其导入Python文件,已使用read()和splitlines()方法转为列表(必须采用此方式)。现在要通过循环拆分其中的“代码”(即“1011”)和后续的工作时间,同时拆分小时与分钟,将它们转为列表中的独立项。目前我的代码如下:
r1 = open("1011.txt") l1 = r1.read().splitlines() print(l1) for hours in range(len(l1)): print ((l1[hours])) r1.close()
解决方案
你可以在循环中对每一行文本进行多层拆分,最终整理成目标结构,优化后的代码如下:
r1 = open("1011.txt") l1 = r1.read().splitlines() # 存储最终拆分后的所有数据 final_data = [] for line in l1: # 第一步:按空格拆分,分离代码和时间字符串 code, time_str = line.split() # 第二步:按冒号拆分时间,转成整数方便后续处理 hour, minute = map(int, time_str.split(':')) # 将拆分后的项组成列表,加入结果集 split_item = [code, hour, minute] final_data.append(split_item) # 实时打印单条拆分结果 print(split_item) r1.close() # 查看全部整理好的数据 print("最终拆分结果:", final_data)
代码说明
- 直接遍历
l1中的每一行(for line in l1),比用range(len(l1))更简洁易读 split()默认按空格拆分,一行文本会被拆成「代码」和「时间字符串」两个元素map(int, time_str.split(':'))可以快速把拆分后的小时、分钟字符串转为整数,方便后续做时间计算、排序等操作- 最终的
final_data列表中,每个元素都是[代码, 小时, 分钟]的结构,满足你要的独立项需求
如果想避免手动关闭文件的问题,推荐使用with语句自动管理文件资源,改写后的代码如下:
final_data = [] with open("1011.txt") as r1: l1 = r1.read().splitlines() for line in l1: code, time_str = line.split() hour, minute = map(int, time_str.split(':')) final_data.append([code, hour, minute]) print([code, hour, minute]) print("最终拆分结果:", final_data)
内容的提问来源于stack exchange,提问作者Parsa
相关产品推荐
相关产品推荐

