文章目錄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 這...