1. 程式人生 > >python-用正則表示式篩選文字資訊

python-用正則表示式篩選文字資訊

【摘要】  本文主要介紹如何對多個文字進行讀取,並採用正則表示式對其中的資訊進行篩選,將篩選出來的資訊存寫到一個新文字。

文字基礎操作

開啟檔案:open(‘檔名’,‘開啟方式’)>>>file=open(r'C:\Users\yuanlei\Desktop\mytxt.txt','w+').為避免報錯,在檔名的引號前加個r.

檔案開啟方式:只讀——r或rt,rb為二進位制檔案;開啟檔案前清空檔案內容——w或wt;在文末寫入——a+;

                         清空內容然後在文末寫入——w+;寫到檔案任意位置——r+;

關閉檔案:檔案開啟執行好後必須要關閉——檔名.close()>>>mytxt.close()

讀取檔案中的內容:將每行內容,包括換行符,作為一個元素存入陣列——lines=file_object.readlines(),但是這樣會把換行符也賦進去

                                去除換行符——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()