Python 3.6文件读取及内容拆分:列表提取异常问题
解决Python 3.6读取分段文件内容的问题
嘿,我来帮你搞定这个困扰!看起来你是在处理带有明确分段标记的文本文件,只拿到exemplars部分的一行内容,大概率是因为你的读取逻辑没有持续收集该分段下的所有行,就提前切换到了samples的处理。
问题根源分析
我猜你之前的代码可能是这样的:找到#list of exemplars标记后,只调用了一次readline()获取单行,或者没有用循环持续读取直到遇到下一个分段标记(#list of samples),导致只拿到了第一行就停止收集了。
正确的实现代码
下面是适配Python 3.6的完整解决方案,用状态跟踪的方式来分别收集两个分段的内容:
# 初始化两个空列表存储内容 exemplars = [] samples = [] # 状态变量,跟踪当前正在读取哪个分段 current_section = None # 用with语句安全读取文件(Python 3.6完全支持) with open('你的文件名.txt', 'r', encoding='utf-8') as file: for line in file: # 去除首尾空白字符(包括换行符) cleaned_line = line.strip() # 跳过空行和标记行本身 if not cleaned_line: continue # 检查是否是分段标记,切换当前状态 if cleaned_line == '#list of exemplars': current_section = 'exemplars' continue elif cleaned_line == '#list of samples': current_section = 'samples' continue # 根据当前状态,将内容添加到对应列表 if current_section == 'exemplars': exemplars.append(cleaned_line) elif current_section == 'samples': samples.append(cleaned_line) # 测试输出 print("收集到的exemplars内容:") for item in exemplars: print(item) print("\n收集到的samples内容:") for item in samples: print(item)
代码说明
- 状态跟踪:用
current_section变量记录当前正在处理哪个分段,遇到标记行时切换状态。 - 逐行读取:通过
for line in file的方式逐行遍历文件,避免一次性读取大文件占用过多内存。 - 跳过无效行:自动跳过空行和分段标记行,只收集有效内容行。
- 兼容Python 3.6:所有语法和函数都是Python 3.6支持的,不需要额外依赖。
这样修改后,你就能完整收集到#list of exemplars下的所有内容,而不仅仅是第一行啦!
内容的提问来源于stack exchange,提问作者jxtz
相关产品推荐
相关产品推荐

