Python实现文本文件行合并并跳过指定记录的问题求助
文本文件处理问题解决方案
需求说明
输入文件内容(可能包含空行):
11111Author Name
22222Date
11111 01 Var-1
11111 02 Var-2
11111 02 Var-3
处理规则:
- 若记录第6位为
*,直接跳过该记录 - 忽略前6字节的序列号(可为空格)
- 仅合并第6位无
*的记录 - 仅处理第7位到第72位的数据
- 最终输出以逗号分隔,预期结果:
01,Var-1,02,Var-2,02,Var-3
原代码存在的问题:
- 判断逻辑错误:直接检查
"*" not in lines会误判含*但不在第6位的行,应该精准定位第6位字符 - 格式处理不当:用空格拼接结果后无法直接得到逗号分隔的格式,且未忽略前6字节内容,也没限制处理范围
修正代码
result = [] with open("D:/Desktop/Files/Myfile.txt", "r") as file_in: for line in file_in: # 去除换行符并跳过空行 line = line.rstrip('\n') if not line: continue # 检查第6位(索引5)是否为*,是则跳过 if len(line) >= 6 and line[5] == '*': continue # 截取第7到72位(索引6至71)的内容,去除首尾空格 content = line[6:72].strip() if not content: continue # 分割内容并加入结果列表 result.extend(content.split()) # 用逗号连接所有元素并输出 print(','.join(result))
代码说明
- 用列表
result统一收集所有需要的字段,便于最终拼接 - 精准判断第6位是否为
*,避免误跳过有效行 - 严格截取第7到72位的内容,确保只处理指定范围
- 按空格分割每行有效内容,自动去除中间的多余空格
- 最后用
','.join()一次性完成逗号分隔,避免格式混乱
内容的提问来源于stack exchange,提问作者Rahul Dubey
相关产品推荐
相关产品推荐

