python文本文件處理
Ⅰ 用python讀取文本文件,對讀出的每一行進行操作,這個怎麼寫
用python讀取文本文件,對讀出的每一行進行操作,寫法如下:
f=open("test.txt","r")
whileTrue:
line=f.readline()
ifline:
pass#dosomethinghere
line=line.strip()
p=line.rfind('.')
filename=line[0:p]
print"create%s"%line
else:
break
f.close()
Ⅱ python對文本文件的讀有哪些方法,寫有哪些方法
1 文件讀取全文本操作
在一定場景下我們需要把文本全部內容讀取出來,進行處理。python提供三種函數讀取文件,分別是read readline readlines,
read():讀取文件的全部內容,加上參數可以指定讀取的字元。
readline():讀取文件的一行。
readlines():讀取文件的所有行到內存中。
不同場景下我們可以選擇不同函數對文件進行讀取。
1.1 方法一
file_name = input("請輸入你要打開的文件的完整路徑及名稱")
file= open(file_name, "r")
txt=file.read()
# 全文本的處理
file.close()
使用read函數將文件中的內容全部讀取,放在字元串變數txt中。這樣操作適合於文本較小,處理簡單的情況,當文件較大時,這種方式處理時不合適的。一次性讀取較大的文件到內存中,會耗費較多的時間和資源。這時候分批處理效果更好。
1.2 方法二
file_name = input("請輸入你要打開的文件的完整路徑及名稱")
file= open(file_name, "r")
txt= file.read(4)
# 文本的處理while txt != ""txt= file.read(4)
# 批量文本處理
file.close()
這種方法適合於分批處理文本信息,每次批量讀入,批量處理,不會對內存造成較大的壓力。
1.3 方法三
file_name = input("請輸入你要打開的文件的完整路徑及名稱")
file= open(file_name, "r")for line infile.readlines():
# 處理每一行數據
file.close()
這種處理方式適合處理以行為分割特點的文本,並且文本較小,因為這種處理方式需要一次性把文件所有內容讀取到內存中。
1.4 方法四
file_name = input("請輸入你要打開的文件的完整路徑及名稱")
file= open(file_name, "r") # 這里的file時文件句柄for line infile:
# 處理每一行數據
file.close()
這種方式和方法三中的區別是分行讀入,逐行處理,不會一次性把文件所有內容都讀入到內存中,對一些大文件的處理是很有效的。
2 文件寫入文本操作
文件寫入有兩種寫入函數和一種輔助支持。
write():向文件中寫入一個字元或者位元組流
writelines():將一個元素全為字元串的列表寫入到文件中 需要注意的是,writelines寫入列表元素的時候會把列表元素的內容拼接到一起寫入,不會有換行和空格 。
seek(): 輔助寫入函數offset偏移量參數代表含義如下
0 - 文件開頭
1 - 當前位置
2 - 文件結尾
2.1 方法一
file_name = input("output.txt", "w+")
text= "hello world!"file_name.write(text)
file.close()
2.2 方法二
file_name = input("output.txt", "w+")
list= ["中午","早上","晚上"]
file_name.writelines(list)for line infile:
# 讀取寫入的數據,這時候發現是沒有任何內容的
file.close()
我們增加一行代碼就可以讀取到寫入的文件內容,利用seek()函數調整寫操作指針的位置,可以實現寫操作之後的正常讀取。
file_name = input("output.txt", "w+")
list= ["中午","早上","晚上"]
file_name.readlines(list)
file_name.seek(0) # 調整寫的指針到文件的開始位置for line infile:
# 讀取寫入的數據,這時候會讀出一行寫入的數據。
file.close()
Ⅲ Python中的文件讀寫-理論知識
Python處理兩種不同類型的文件:二進制文件和文本文件。了解兩者之間的差異很重要,因為它們的處理方式不同。
二進制文件
在正常計算機使用期間使用的大多數文件實際上是二進制文件,而不是文本。比如:Microsoft Word .doc文件實際上是一個二進制文件,即使它只有文本。
二進制文件的其他示例包括:
圖像文件,包括.jpg,.png,.bmp,.gif,等。
文件,包括.doc,.xls,.pdf或者其他文件。
那是因為這些文件都有特殊處理的要求,需要特定類型的軟體來打開它。例如,您需要Excel來打開.xls文件,並使用資料庫程序來打開.sqlite文件。
文本文件
一方面,沒有特定的編碼,可以通過沒有任何特殊處理的標准文本編輯器打開。但是,每個文本文件都必須遵守一組規則:
文本文件必須是可讀的。他們可以(並且經常會)包含許多特殊編碼,尤其是在HTML或其他標記語言中,但您仍然可以說出它的含義
文本文件中的數據按行組織。在大多數情況下,每一行都是一個獨特的元素,無論是指令行還是命令。
此外,文本文件在每行的末尾都有一個看不見的字元,這使文本編輯器知道應該有一個新行。通過編程與這些文件交互時,您可以利用該字元。在Python中,它用「 n」 表示。
在哪裡可以找到Python的文件I / O工具
在Python中工作時,您不必擔心導入任何特定的外部庫來處理文件。Python附帶有「文件庫」,文件I / O工具和實用程序是核心語言的內置部分。
但是在其他語言(如C ++)中,要處理文件,您必須通過包含正確的頭文件來啟用文件I / O工具#include <fstream>。如果您使用java編寫代碼,則需要使用該import java.io.*語句。
使用Python,就沒有必要這樣做,這是因為Python有一組內置函數,可以處理讀取和寫入文件所需的所有內容。
Ⅳ python 處理文本,格式化文本~
#coding=utf-8
records=[]
record={}
withopen("data.txt")asf:
whileTrue:
line=f.readline()
ifnotline:
iflen(record)!=0:records.append(record)
break
field=line[line.find(":")+1:].strip()
ifline.startswith("ScopeId"):
iflen(record)!=0:records.append(record)
record={}
record["ScopeId"]=field
elifline.startswith("Name"):
record["Name"]=field
elifline.startswith("Free"):
record["Free"]=field
elifline.startswith("InUse"):
record["InUse"]=field
elifline.startswith("PercentageInUse"):
record["PercentageInUse"]=field
#設置預設項
forrinrecords:
r.setdefault("InUse",0)
r.setdefault("PercentageInUse",0)
r.setdefault("Name","")
r.setdefault("Free",0)
printrecords
Ⅳ python編輯一個txt格式文本文件
import re,os
def updateFile(file,old_str,new_str):
with open(file, "r", encoding="utf-8") as f1,open("%s.bak" % file, "w", encoding="utf-8") as f2:
for line in f1:
f2.write(re.sub(old_str,new_str,line))
os.remove(file)
os.rename("%s.bak" % file, file)
updateFile(r"D:\zdz\myfile.txt", "zdz", "daziran")#將"D:\zdz\"路徑的myfile.txt文件把所有的zdz改為daziran
Ⅵ python 文本文件數據處理
分隔日誌文件存為小文件
#coding:utf-8
#file: FileSplit.py
import os,os.path,time
def FileSplit(sourceFile, targetFolder):
sFile = open(sourceFile, 'r')
number = 100000 #每個小文件中保存100000條數據
dataLine = sFile.readline()
tempData = [] #緩存列表
fileNum = 1
if not os.path.isdir(targetFolder): #如果目標目錄不存在,則創建
os.mkdir(targetFolder)
while dataLine: #有數據
for row in range(number):
tempData.append(dataLine) #將一行數據添加到列表中
dataLine = sFile.readline()
if not dataLine :
break
tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + str(fileNum) + ".txt")
tFile = open(tFilename, 'a+') #創建小文件
tFile.writelines(tempData) #將列表保存到文件中
tFile.close()
tempData = [] #清空緩存列表
print(tFilename + " 創建於: " + str(time.ctime()))
fileNum += 1 #文件編號
sFile.close()
if __name__ == "__main__" :
FileSplit("access.log","access")
分類匯總小文件:
#coding:utf-8
#file: Map.py
import os,os.path,re
def Map(sourceFile, targetFolder):
sFile = open(sourceFile, 'r')
dataLine = sFile.readline()
tempData = {} #緩存列表
if not os.path.isdir(targetFolder): #如果目標目錄不存在,則創建
os.mkdir(targetFolder)
while dataLine: #有數據
p_re = re.compile(r'(GET|POST)s(.*?)sHTTP/1.[01]',re.IGNORECASE) #用正則表達式解析數據
match = p_re.findall(dataLine)
if match:
visitUrl = match[0][1]
if visitUrl in tempData:
tempData[visitUrl] += 1
else:
tempData[visitUrl] = 1
dataLine = sFile.readline() #讀入下一行數據
sFile.close()
tList = []
for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):
tList.append(key + " " + str(value) + ' ')
tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + "_map.txt")
tFile = open(tFilename, 'a+') #創建小文件
tFile.writelines(tList) #將列表保存到文件中
tFile.close()
if __name__ == "__main__" :
Map("access\access.log1.txt","access")
Map("access\access.log2.txt","access")
Map("access\access.log3.txt","access")
3. 再次將多個文件分類匯總為一個文件。
#coding:utf-8
#file: Rece.py
import os,os.path,re
def Rece(sourceFolder, targetFile):
tempData = {} #緩存列表
p_re = re.compile(r'(.*?)(d{1,}$)',re.IGNORECASE) #用正則表達式解析數據
for root,dirs,files in os.walk(sourceFolder):
for fil in files:
if fil.endswith('_map.txt'): #是rece文件
sFile = open(os.path.abspath(os.path.join(root,fil)), 'r')
dataLine = sFile.readline()
while dataLine: #有數據
subdata = p_re.findall(dataLine) #用空格分割數據
#print(subdata[0][0]," ",subdata[0][1])
if subdata[0][0] in tempData:
tempData[subdata[0][0]] += int(subdata[0][1])
else:
tempData[subdata[0][0]] = int(subdata[0][1])
dataLine = sFile.readline() #讀入下一行數據
sFile.close()
tList = []
for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):
tList.append(key + " " + str(value) + ' ')
tFilename = os.path.join(sourceFolder,targetFile + "_rece.txt")
tFile = open(tFilename, 'a+') #創建小文件
tFile.writelines(tList) #將列表保存到文件中
tFile.close()
if __name__ == "__main__" :
Rece("access","access")
Ⅶ Python文本處理工具都有哪些
1、 NLTK — Natural Language Toolkit
搞自然語言處理的同學應該沒有人不知道NLTK吧,這兒也就不多說了。不過引薦兩本書籍給剛剛觸摸NLTK或許需求具體了解NLTK的同學: 一個是官方的《Natural Language Processing with Python》,以介紹NLTK里的功用用法為主,一起附帶一些Python常識,一起國內陳濤同學友情翻譯了一個中文版,這兒可以看到:引薦《用Python進行自然語言處理》中文翻譯-NLTK配套書;另外一本是《Python Text Processing with NLTK 2.0 Cookbook》,這本書要深入一些,會涉及到NLTK的代碼結構,一起會介紹怎麼定製自己的語料和模型等,相當不錯。
2、 Pattern
Pattern由比利時安特衛普大學CLiPS實驗室出品,客觀的說,Pattern不僅僅是一套文本處理東西,它更是一套web數據挖掘東西,囊括了數據抓取模塊(包含Google, Twitter, 維基網路的API,以及爬蟲和HTML剖析器),文本處理模塊(詞性標示,情感剖析等),機器學習模塊(VSM, 聚類,SVM)以及可視化模塊等,可以說,Pattern的這一整套邏輯也是這篇文章的組織邏輯,不過這兒我們暫時把Pattern放到文本處理部分。我個人首要使用的是它的英文處理模塊Pattern.en, 有許多很不錯的文本處理功用,包含基礎的tokenize, 詞性標示,語句切分,語法檢查,拼寫糾錯,情感剖析,句法剖析等,相當不錯。
3、 TextBlob: Simplified Text Processing
TextBlob是一個很有意思的Python文本處理東西包,它其實是根據上面兩個Python東西包NLKT和Pattern做了封裝(TextBlob stands on the giant shoulders of NLTK and pattern, and plays nicely with both),一起供給了許多文本處理功用的介面,包含詞性標示,名詞短語提取,情感剖析,文本分類,拼寫檢查等,甚至包含翻譯和語言檢測,不過這個是根據Google的API的,有調用次數約束。
4、 MBSP for Python
MBSP與Pattern同源,同出自比利時安特衛普大學CLiPS實驗室,供給了Word Tokenization, 語句切分,詞性標示,Chunking, Lemmatization,句法剖析等根本的文本處理功用,感興趣的同學可以重視。
關於 Python文本處理工具都有哪些,環球青藤小編就和大家分享到這里了,學習是永無止境的,學習一項技能更是受益終身,所以,只要肯努力學,什麼時候開始都不晚。如果您還想繼續了解關於python編程的學習方法及素材等內容,可以點擊本站其他文章學習。
Ⅷ NLTK 在python上 對文本文件內容進行停詞處理
Nltk是python下處理語言的主要工具包,可以實現去除停用詞、詞性標注以及分詞和分句等。
安裝nltk,寫python一般使用的是集成環境EPD,其中有包管理,可以在線進行安裝。如果不是集成環境,可以通過pip install nltk安裝。
》pip install nltk #安裝nltk
》nltk.download() #彈出一個選擇框,可以按照自己需要的語義或者是功能進行安裝
一般要實現分詞,分句,以及詞性標注和去除停用詞的功能時,需要安裝stopwords,punkt以及
當出現LookupError時一般就是由於缺少相關模塊所導致的
Ⅸ python具體在文本處理上怎麼用
在諸多軟體壓縮包中或是項目壓縮包中都會存在一個readme.txt文件,其中的內容無非是對軟體的簡單介紹和注意事項。但是在該文本文件中,內容沒有分段分行,是非常冗雜地混在一起。當然處理手段多種多樣,而我正好嘗試利用Python解決這個問題。另外,這些內容或許對將來爬蟲爬下的內容進行處理也是有些幫助的,只不過面對的混亂和處理需求不同而已。
這里的思路很簡單,打開一個文本文檔,對其中具有兩個及兩個以上的空格進行處理,即產生換行,另外出現很多的『=』和『>>>』也進行處理。這里我嘗試處理的是easyGUI文件夾中的read.txt,該文件我復制在了D盤的根目錄下。具體的實現代碼如下:
def save_file(lister):#將傳入的列表保存在新建文件中 new_file = open('new_file','w')#創建並打開文件,文件可寫 new_file.writelines(lister)#將列表lister中的內容逐行列印 new_file.close()#關閉文件,且緩存區中的內容保存至該文件中def split_file(filename):#分割原始文件 f = open(filename)#打開該原始文件,默認該文件不可修改 lister = []#初始化一個空列表 for each_line in f: if each_line[:6] != '======' and each_line[:3] != '>>>': #當連續出現六個『=』或連續三個『>』時,列印一個換行符,實際體現在else中 each_line.split(' ',1)#當出現兩個空格時,分割一次,並在下一行代碼中以一行的形式保存在列表中 lister.append(each_line) else:
lister.append('\n')
save_file(lister)
f.close()
split_file('D:\\README.txt')
代碼給出了詳細的注釋。其中得到的新的名為「new_file」的文件保存在默認的Python項目的目錄下。當然,可以通過chdir()更改工作目錄,使得文件創建在自己指定的位置。