用python清洗文字檔案

2021-10-08 04:38:05 字數 4360 閱讀 9150

對此,首先需要熟悉一些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一起刪除。

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

>>

> test =

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

## 建立txt檔案

>>

> fname =

"test.txt"

#此為檔名

>>

>

file

=open

(fname,

"w")

>>

>

file

.write(test)

#寫入檔案內容

30>>

>

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'為換行

31>>

>

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'

在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

deftxtpure

(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 用到文字檔案的讀取,經過一番研究,從網上查詢資料,經過測試,總結了一下讀取文字檔案的方法.a f open filename r content f.read decode utf 8 b f codecs.open encoding utf 8 content f.rea...

Python讀取文字檔案

給定c data hello.txt,內容如下 jack hello,how are you?rose i m good.按行讀取 filepath r c data hello.txt with open filepath as txtfile for line in txtfile print ...

Python 讀寫文字檔案

def readfile filename,mode r 讀取檔案內容 filename 檔名 return string bin 若檔案不存在,則返回空字串 import os if not os.path.exists filename return fp open filename,mode,...