python清洗文字 用python清洗文字檔案

2021-10-12 12:11:57 字數 3148 閱讀 8434

文章目錄txt清洗1 字串操作

2 txt的建立和讀取

3 檔案讀取以及實現

txt清洗

1 字串操作

對此,首先需要熟悉一些python基本的字串操作。

在python中,字串用引號('或")來表示,並可通過類似陣列的方式進行索引,對此我們先建立乙個字串

>>> test = "txt檔案csdn.com清csd.com洗csdn.com"

>>> test[:2]

'tx'

我們要做的就是刪除字串中所有的"csdn.com"。

python中提供了字串替代函式replace,即只需將"csdn.com"替換為空字串即可。

>>> test.replace("csdn.com","")

'txt檔案清洗'

python的正規表示式re模組提供了sub方法可以實現這一功能

>>> import re

>>> test = "txt檔案csdn.com清csd.com洗csdn.com"

>>> new = re.sub(r'[a-za-z0-9]+.com','',test)

>>> new

'txt檔案清洗'

上述正規表示式中,表示出現在中的某個元素,[a-za-z0-9]表示從a到z,從a到z,從0到9的所有字元,即大小寫字母以及數字。+表示出現大於一次的任意次數。總的來說,就是當.com之前出現任意字母和數字時,將這些字母數字連同.com一起刪除。

2 txt的建立和讀取

在pyhton中,檔案讀取操作通過open來實現。

>>> test = "txt檔案csdn.com清csd.com洗csdn.com"

## 建立txt檔案

>>> fname = "test.txt" #此為檔名

>>> file = open(fname,"w")

>>> file.write(test)#寫入檔案內容

>>> file.close() ##自此便建立了

## 讀取txt檔案

>>> file = open(fname,'r')

>>> txt = file.read()

>>> txt

'txt檔案csdn.com清csd.com洗csdn.com'

函式open的輸入引數,除了有檔名之外,還有模式。當模式為'r'時,表示我們對檔案內容進行讀取;當模式為'w'時,表示寫入檔案。

此外,還有下列不同的模式。

標記說明

flag

mode備註r

唯讀模式

w只寫模式

可建立,會覆蓋

a追加模式

只寫,且從尾部開始

r+讀寫模式

可讀可寫不可建立

w+讀寫模式

可讀可寫可建立

a+讀寫模式

可讀可寫可建立,從尾部寫

rb二進位制讀模式

wb二進位制寫模式

ab二進位制追加模式

rb+二進位制讀寫模式

wb+二進位制讀寫模式

ab+二進位制讀寫模式

試一下追加模式

>>> fname = "test.txt"

>>> test = "txt檔案csdn.com清csd.com洗csdn.com"

>>> file = open(fname,'a')

>>> file.write('\n'+test) #'\n'為換行

>>> file.close()

此時開啟test.txt,發現檔案中的內容變為

txt檔案csdn.com清csd.com洗csdn.com

txt檔案csdn.com清csd.com洗csdn.com

file.read()會將檔案中的所有字元同時讀取出來,如果我們希望只讀取一行,可以通過readline()函式。

>>> fname = "test.txt"

>>> file = open(fname,'r')

>>> txt = file.readline()

>>> txt

'txt檔案csdn.com清csd.com洗csdn.com'

3 檔案讀取以及實現

在python中,匯入os模組,通過listdir遍歷目錄下所有檔案,其輸入引數為將要遍歷的目錄,如果為空,則表示當前目錄。

>>> import os

>>> dirs = os.listdir()

>>> dirs

['01亞馬孫探險.txt', '02南海奇遇.txt', '03海底尋寶.txt', '04勇探火山口.txt', '05惡戰殺人鯨.txt', '06非洲歷險.txt', '07巧捕白象.txt', '08獵場剿匪.txt', '09追蹤食人獅.txt', '10智擒大猩猩.txt', '11神秘海底城.txt', '12闖入食人國.txt', '13智鬥猛獸.txt', '14北極探險.txt']

讀取之後,發現我們此前的判斷失誤了,

>>> file = open(dirs[0],'r')

>>> txt = file.readline()

>>> txt

這種冗餘資訊完全不是乙個正規表示式可以實現的,所以還是用老舊的方法吧,考慮到這種資訊不一定出現在單獨一行,所以我們刪除的資訊不包含換行符。

>>> for fname in dirs:

... file = open(fname,'r') #讀取檔案

... test = file.read().replace(txt[:-1],'')

... file = open(fname,'w')

... file.write(test)

... file.close()

然後,資料夾下所有的txt就完成了清洗。

封裝成函式

import re

def txtpure(dlist,folder=0):

dirs = os.listdir() if not folder else os.listdir(folder)

for fname in dirs:

file = open(fname,'r')

test = file.read()

for txt in dlist:

test = test.replace(txt,'')

file = open(fname,'w')

用python清洗文字檔案

對此,首先需要熟悉一些python基本的字串操作。在python中,字串用引號 或 來表示,並可通過類似陣列的方式進行索引,對此我們先建立乙個字串 test txt檔案csdn.com清csd.com洗csdn.com test 2 tx 我們要做的就是刪除字串中所有的 csdn.com pytho...

資料清洗 提取爬蟲文字中的電話號碼(Python)

每個號碼前面帶 而原始文字中有些號碼帶fax字首,為傳真號碼,需要剔除掉 coding utf 8 created on tue aug 18 09 46 30 2020 author songyou han import os import csv 獲取cvs檔案列表函式 deffile name...

用SourceInsight閱讀Python工程

首先從http www.sourceinsight.com public languages python.clf 然後對sourceinsight作如下配置 1 選擇options preferences,單擊languages選項 2 單擊import按鈕,裝載並匯入python.clf 3 這...