Python正则表达式批量筛选文本内容实战
本文详解如何利用Python的open函数进行文件读写,结合os模块遍历目录,并通过正则表达式re模块从多个文本文件中精准提取指定数据。文章提供了完整的代码示例,演示如何去除换行符、匹配模式并将结果写入新文件,适合需要批量处理文本数据的开发者参考。
本文主要讲解如何在Python中读取多个文本文件,利用正则表达式对文件内容进行筛选,并将提取出的信息保存至一个新的文本文件中。
文本基础操作
打开文件需使用open函数,语法为open('文件名', '打开方式')。例如:>>>file=open(r'C:\Users\yuanlei\Desktop\mytxt.txt','w+')。为避免路径解析错误,建议在文件名引号前添加r以表示原始字符串。
常见的文件打开方式包括:只读模式(r或rt),二进制文件读取(rb);覆盖写入模式(w或wt,打开时清空原内容);追加模式(a+,在文件末尾写入)。
其他模式包括:覆盖并追加模式(w+,先清空内容再写入);读写模式(r+,可定位到文件任意位置进行读写)。
关闭文件:文件操作完成后必须调用close方法关闭,例如:>>>mytxt.close()。
读取文件内容时,可使用file_object.readlines()将每行内容(含换行符)作为元素存入列表,但这会将换行符一并读取。
若需去除换行符,可使用splitlines()方法:new_lines=lines.splitlines()。
使用os包获取目录下的文件列表,语法为import os后调用os.listdir(父文件地址)。
以下是实现上述功能的完整代码示例:
# coding: utf-8
#读取文本中的中英文数据并使用正则表达式将所需数据筛选入到一个新文本中
import re
import os
#zhengze函数对读取到的数据进行筛选,并将筛选好的数据存入数组new_lines
new_lines=[] #申明new_lines数组
def zhengze(f):
regex_str=".*?(l.*?e).*"
for x in f:
new_x = x.splitlines() #注意:splitlines是将传入的字符串去除'\n'之后以数组的形式传出,而不是字符串形式
match_obj=re.match(regex_str,new_x[0])
if match_obj:
new_lines.append(match_obj.group(1))
else:
new_lines.append('no')
return new_lines
#获取指定文件夹下的所有文本的绝对地址,并存入数组file_path
path=r'C:\Users\yuanlei\Desktop\new_file_txt'
file_path=[]
for filename in os.listdir(path): #获取path下所有文件的路径
file_path.append((os.path.join(path,filename)))
print file_path
#对每个文本调用正则函数进行筛选,筛选过后的数据存入数组final
for adress in file_path:
file_object=open(adress)
lines = file_object.readlines( ) #将文本中的内容以数组的形式(每行为一个元素)赋给lines
file_object.close()
final=zhengze(lines)
print final
#将筛选出来的数据写入新文本re_new.txt
file_2=open(r'C:\Users\yuanlei\Desktop\re_new.txt','w+')
for x in final:
file_2.write(x)
file_2.write('\n')
file_2.close()
以上关于Python使用正则表达式筛选文本信息的实例分享完毕,希望能为读者提供参考,并欢迎大家继续支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









