Python中替换字符并拆分文本行?现有代码失效求解决方案
问题:替换文本文件中的
~为换行符无效 我有一个包含如下格式数据的文本文件:
DMG*D8*19931219*F**H~AMT*P3*0~NM1*31*1~N3*2670 SO A W GRIMES BO*#6102~N4*ROUND ROCK*TX*786642849~NM1*QD*1*FIGUEROA*LILIET~N3*2670 SO A W GRIMES BO*#6102~N4*ROUND ROCK*TX*786642849~INS*Y*18*024*07*A***TE~REF*0F*811229070~REF*1L*811229070~REF*3H*0~REF*ZZ*H~REF*6O*1055763324~DTP*303*D8*20240901~DTP*356*D8*20240201~DTP*357*D8*20250131~DTP*286*D8*20240831
目标是将所有~替换为换行符,实现按该字符拆分文本行。
尝试了以下代码但无效果,输出和原始内容一致:
with open(txtP835s + '/' + fileName, "r") as txtfile: for line in txtfile: line.replace('~', '\n') lines = line.splitlines() print(lines) txtfile.close()
问题原因
- 字符串不可变特性:
str.replace()方法会返回一个新的字符串,不会修改原字符串,你没有将替换后的结果赋值给变量,所以原line内容完全没变化。 - 循环变量覆盖:循环中每次都会重新赋值
lines,最终只保留了文件最后一行的拆分结果,且这行还是未替换的原始内容。 - 冗余的关闭操作:使用
with语句时,代码块结束后会自动关闭文件,无需手动调用txtfile.close()。
修正后的代码
方案1:直接输出替换后的内容
file_path = f"{txtP835s}/{fileName}" with open(file_path, "r") as txtfile: # 一次性读取整个文件内容 content = txtfile.read() # 替换~为换行符并接收新字符串 modified_content = content.replace('~', '\n') # 打印处理后的内容 print(modified_content) # 如果需要得到拆分后的列表 # lines = modified_content.splitlines() # print(lines)
方案2:将处理后的内容写入新文件
file_path = f"{txtP835s}/{fileName}" output_path = f"{txtP835s}/modified_{fileName}" with open(file_path, "r") as txtfile, open(output_path, "w") as outfile: content = txtfile.read() modified_content = content.replace('~', '\n') outfile.write(modified_content)
内容的提问来源于stack exchange,提问作者Ben Smith
相关产品推荐
相关产品推荐

