测试代码 jb51.txt 1:www.jb51.net 2:www.jb51.net 3:www.jb51.net 4:www.jb51.net 5:www.jb51.net 6:www.jb51.net 7:www.jb51.net 8:www.jb51.net 9:www.jb51.net 10:www.jb51.net 11:www.jb51.net 12:www.jb51.net 13:www.jb51.net 14:www.jb51.net 15:www.jb51.net 16:www.jb51.net python代码 代码一 # -*- coding: utf-8 -*- 在Python编程中,有时我们需要处理文本文件,去除其中的空白行以优化数据或者进行特定的文本处理任务。本文将详细讲解三种不同的Python实现方法来去除文本文件中的空白行,并解析这些代码的工作原理。 **方法一:基于`split()`函数** ```python # -*- coding: utf-8 -*- def delblankline(infile, outfile): infopen = open(infile, 'r', encoding="utf-8") outfopen = open(outfile, 'w', encoding="utf-8") lines = infopen.readlines() for line in lines: if line.split(): outfopen.writelines(line) else: outfopen.writelines("") infopen.close() outfopen.close() delblankline("jb51.txt", "o.txt") ``` 在这个实现中,我们首先打开输入文件(`infile`)和输出文件(`outfile`)。然后,通过`readlines()`方法读取输入文件的所有行,存储到`lines`列表中。对于`lines`中的每一行,我们使用`split()`函数检查是否包含任何非空白字符。如果`split()`返回的列表长度不为0,说明这行不是空白行,将其写入输出文件。否则,写入一个空字符串,代表删除了空白行。最后关闭两个文件。 `split()`函数默认使用空格作为分隔符,它会将字符串切分为子字符串列表。如果字符串中没有空格,`split()`将返回一个只包含原字符串的列表,其长度为1。如果字符串仅包含空格,`split()`会返回一个空列表,表示没有有效内容。 **方法二:基于`strip()`函数** ```python # -*- coding: utf-8 -*- def delblankline(infile, outfile): infopen = open(infile, 'r', encoding="utf-8") outfopen = open(outfile, 'w', encoding="utf-8") lines = infopen.readlines() for line in lines: line = line.strip() if len(line) != 0: outfopen.writelines(line) outfopen.write('\n') infopen.close() outfopen.close() delblankline("jb51.txt", "o2.txt") ``` 这个方法使用`strip()`函数,它会移除字符串开头和结尾的空白字符。如果字符串只剩下空白,`strip()`将返回一个空字符串。因此,我们可以通过检查`line.strip()`的长度来判断是否是空白行。不是空白行的话,写入输出文件并添加一个换行符。 **方法三:基于`readlines()`和`write()`** ```python #coding:utf-8 import sys def delete(filepath): f=open(filepath,'a+') fnew=open(filepath+'_new.txt','wb') #将结果存入新的文本中 for line in f.readlines(): #对每一行先删除空格,\n等无用的字符,再检查此行是否长度为0 data=line.strip() if len(data)!=0: fnew.write(data) fnew.write('\n') f.close() fnew.close() if __name__=='__main__': if len(sys.argv)==1: print(u"必须输入文件路径,最好不要使用中文路径") else: delete(sys.argv[1]) ``` 这个方法与方法二类似,但使用了`write()`函数而不是`writelines()`。`write()`函数可以直接写入字符串,不需要传入一个列表。这里,我们依然使用`strip()`去除行首尾的空白,并检查长度,然后写入文件。 以上三种方法都可以有效地去除文本文件中的空白行,选择哪一种取决于具体需求和代码风格。在实际开发中,考虑到效率和代码可读性,通常会优先选择简洁且易于理解的实现方式。同时,处理大量数据时,应考虑文件操作的性能,避免一次性加载整个文件到内存。在处理大文件时,可以考虑使用逐行读取的方式,减少内存消耗。
- 粉丝: 3
- 资源: 903
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助