You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除TXT文件中的空行?现有代码失效求助

问题描述

我试过各种方法删除其他脚本生成的TXT文件里的空行,包括用.isspace()方法、删除包含若干空格的行、删除含'\n'的行,但都没达到预期效果。下面是TXT文件片段和我的代码,帮忙解决:

TXT文件片段

Gmina Wiejska
 Urząd Gminy Brzeziny 
 
 
 ul. Sienkiewicza 16a 95-060 Brzeziny
Łącko
Gmina Wiejska
 Urząd Gminy Łącko 


Łącko 445 33-390 Łącko
Węgliniec
Gmina Miejsko-wiejska
 Urząd Gminy i Miasta Węgliniec 


ul. Sikorskiego 3 59-940 Węgliniec

我的代码

delete = ['<td align="center" class="top" colspan="3"><b>',
          '</td>',
          '<br/></b></td>',
          '<br/></b>',
          'None',
          'brak',
          '[]',
          '\n'
          ]
with open('/Users/dominikgrzeskowiak/python/gminy/text/text1.txt','r+') as file:
    for line in file:
        print(a)
        for i in delete:
            line = line.replace(i,'')
            print(i)
        print(line)  
        if line != '  ' or line != ' \n' or line != '   ':  
            with open('/Users/dominikgrzeskowiak/python/gminy/text/text2.txt','a') as f:
                f.write(line+'\n')
解决方案

你的代码存在几个关键问题:

  1. 条件判断用or逻辑错误——只要有一个条件不满足就会写入,但空行可能是任意数量空格+换行的组合,根本覆盖不全;
  2. 每次循环都打开输出文件,既低效又容易出问题;
  3. print(a)里的a未定义,会直接报错;
  4. 删除列表里加了'\n',会把正常行的换行符也删掉,导致内容全部连在一起。

修改后的代码可以一次性解决这些问题:

delete = ['<td align="center" class="top" colspan="3"><b>',
          '</td>',
          '<br/></b></td>',
          '<br/></b>',
          'None',
          'brak',
          '[]'
          ]

# 一次性打开输入输出文件,避免重复IO操作
with open('/Users/dominikgrzeskowiak/python/gminy/text/text1.txt','r') as infile, \
     open('/Users/dominikgrzeskowiak/python/gminy/text/text2.txt','w') as outfile:
    for line in infile:
        # 替换不需要的字符串
        for item in delete:
            line = line.replace(item, '')
        # 去除每行首尾所有空白(空格、换行、制表符都算)
        stripped_line = line.strip()
        # 处理后非空才写入,自动过滤空行
        if stripped_line:
            outfile.write(stripped_line + '\n')

关键说明:

  • 删掉了删除列表里的'\n',保留正常行的换行结构;
  • 用strip()方法一次性处理所有首尾空白,不管空行是全空格、纯换行还是混合形式,都能精准过滤;
  • 输出文件用w模式直接生成新文件(如果需要追加可以改成a),且只打开一次,效率更高;
  • 去掉了无意义的print(a),避免报错。

这样处理后就能得到完全没有空行的干净文本了。

内容的提问来源于stack exchange,提问作者Dominik Grześkowiak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 20:31:34