Python如何将单行无换行txt文件按规则拆分解析为对应变量
问题解决思路
你的文件没有换行符,readlines() 方法依赖换行符识别行边界,这种场景下只会读入1个包含全量内容的字符串元素,自然无法直接拆分。因为所有记录格式固定、单条长度完全一致,直接按固定长度切片即可完成拆分,不需要额外插入换行符,也不要用全局split()——单条记录内部本身存在分隔空格,全局拆分只会把内容切为零散片段,无法匹配固定位置规则。
具体实现代码
# 读取文件全量内容,自动处理文件关闭 with open('FileName.txt', 'r', encoding='utf-8') as f: total_content = f.read().strip() # 单条记录固定长度:前19位连续编码+1位空格+后6位编码,合计26字符 single_record_len = 26 # 按固定长度切分所有记录 record_list = [total_content[i:i+single_record_len] for i in range(0, len(total_content), single_record_len)] parse_result = [] for record in record_list: # 按固定位置截取5个变量 var1 = record[0:5] var2 = record[5:10] var3 = record[10:15] var4 = record[15:19] var5 = record[20:26] # 跳过第19位的空格 parse_result.append({ "var1": var1, "var2": var2, "var3": var3, "var4": var4, "var5": var5 }) # 输出校验结果 for item in parse_result: print(item)
校验提示
- 正常情况下20条固定长度记录的总字符数应为
20*26=520,可以先打印len(total_content)核对长度,如果数值不符,先检查文件头尾是否存在多余的空格、特殊字符,清理后再解析。 - 如果文件编码不是utf-8,把open方法里的encoding参数改成对应编码即可,比如gbk。
内容的提问来源于stack exchange,提问作者bacca
相关产品推荐
相关产品推荐

