TXT转CSV:替换|为;并删除空行,现有代码存重复行未删空行求助
问题分析与修复
原代码存在两个核心问题:
- 无论行是否为空,先执行了
f2.write(line.replace('|', ';')),导致空行被写入目标文件;随后又在非空行的判断分支里写入原行,造成同一行重复写入的情况。 - 空行过滤的逻辑顺序错误,没有先筛选有效行再处理字符替换。
修正后的代码
# 用with语句自动管理文件生命周期,无需手动关闭 with open("txtfile.txt", 'r') as f1, open("csvfile.csv", 'w') as f2: for line in f1: # 先判断是否为空行(strip后无内容即为空行) if line.strip(): # 仅对非空行执行字符替换并写入 processed_line = line.replace('|', ';') f2.write(processed_line)
代码说明
with语句会在代码块结束后自动关闭文件,避免资源泄漏,写法更简洁安全。- 先通过
line.strip()过滤空行,空行直接跳过不处理。 - 仅对非空行执行
|到;的替换操作,再写入目标文件,彻底解决空行残留和重复写入的问题。
内容的提问来源于stack exchange,提问作者Hans Pettersson
相关产品推荐
相关产品推荐

