當前位置:首頁 » 編程語言 » python文本解析

python文本解析

發布時間: 2022-11-05 02:59:14

『壹』 python 文本文件數據處理

  1. 分隔日誌文件存為小文件

  2. #coding:utf-8

  3. #file: FileSplit.py

  4. import os,os.path,time

  5. def FileSplit(sourceFile, targetFolder):

  6. sFile = open(sourceFile, 'r')

  7. number = 100000 #每個小文件中保存100000條數據

  8. dataLine = sFile.readline()

  9. tempData = [] #緩存列表

  10. fileNum = 1

  11. if not os.path.isdir(targetFolder): #如果目標目錄不存在,則創建

  12. os.mkdir(targetFolder)

  13. while dataLine: #有數據

  14. for row in range(number):

  15. tempData.append(dataLine) #將一行數據添加到列表中

  16. dataLine = sFile.readline()

  17. if not dataLine :

  18. break

  19. tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + str(fileNum) + ".txt")

  20. tFile = open(tFilename, 'a+') #創建小文件

  21. tFile.writelines(tempData) #將列表保存到文件中

  22. tFile.close()

  23. tempData = [] #清空緩存列表

  24. print(tFilename + " 創建於: " + str(time.ctime()))

  25. fileNum += 1 #文件編號

  26. sFile.close()

  27. if __name__ == "__main__" :

  28. 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讀取文本文件,對讀出的每一行進行操作,這個怎麼寫

用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進行文本分析(NPL),學習路線應該是怎樣的(目標:熟練的分析文獻)

先學文本分析的思路方法,
比如文本表示最簡單的方式是詞袋法,把文本變成向量,每個詞是向量的一個維度,所以中文需要分詞,Python分詞找jieba分詞
文本表示向量以後,就可以開始對應你需要的任務,比如做分類聚類關聯之類的事。比如垃圾郵件分類就是建模對文本內容判斷真或假
不用讀文獻,有問題網路找博客就行了

『肆』 如何使用 Python 正則表達式解析文本文件

試試這個方法:import re
def get_email_list(text):
pattern = re.compile(r'\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b')
email_list = re.findall(pattern, text)
return email_list
print get_email_list(your_text)

『伍』 Python解析庫lxml與xpath用法總結

本文主要圍繞以xpath和lxml庫進行展開:

一、xpath 概念、xpath節點、xpath語法、xpath軸、xpath運算符

二、lxml的安裝、lxml的使用、lxml案例


一、xpath

1.xpath概念

XPath 是一門在 XML 文檔中查找信息的語言。XPath 使用路徑表達式在 XML 文檔中進行導航 。XPath 包含一個標准函數庫 。XPath 是 XSLT 中的主要元素 。XPath 是一個 W3C 標准 。


2.xpath節點

xpath有七種類型的節點:元素、屬性、文本、命名空間、處理指令、注釋以及文檔(根)節點。

節點關系:父、子、兄弟、先輩、後輩。


3.xpath語法

xpath語法在W3c網站上有詳細的介紹,這里截取部分知識,供大家學習。

XPath 使用路徑表達式在 XML 文檔中選取節點。節點是通過沿著路徑或者 step 來選取的。下面列出了最有用的路徑表達式:

在下面的表格中,我們已列出了一些路徑表達式以及表達式的結果:


謂語用來查找某個特定的節點或者包含某個指定的值的節點。

謂語被嵌在方括弧中。

在下面的表格中,我們列出了帶有謂語的一些路徑表達式,以及表達式的結果:


XPath 通配符可用來選取未知的 XML 元素。

在下面的表格中,我們列出了一些路徑表達式,以及這些表達式的結果:


通過在路徑表達式中使用"|"運算符,您可以選取若干個路徑。

在下面的表格中,我們列出了一些路徑表達式,以及這些表達式的結果:


4.xpath 軸

軸可定義相對於當前節點的節點集。


5.xpath運算符

下面列出了可用在 XPath 表達式中的運算符:

好了,xpath的內容就這么多了。接下來我們要介紹一個神器lxml,他的速度很快,曾經一直是我使用beautifulsoup時最鍾愛的解析器,沒有之一,因為他的速度的確比其他的html.parser 和html5lib快了許多。


二、lxml

1.lxml安裝

lxml 是一個xpath格式解析模塊,安裝很方便,直接pip install lxml 或者easy_install lxml即可。


2.lxml 使用

lxml提供了兩種解析網頁的方式,一種是你解析自己寫的離線網頁時,另一種 則是解析線上網頁。

導入包:


1.解析離線網頁:

2.解析在線網頁:

那麼我們怎麼獲取這些標簽和標簽對應的屬性值了,很簡單,首先獲取標簽只需你這樣做:

然後我們可以,比方說,你要獲取a標簽內的文本和它的屬性href所對應的值,有兩種方法,

1.表達式內獲取

2.表達式外獲取

這樣就完成了獲取,怎麼樣,是不是很簡單了,哈哈哈。


下面再來lxml的解析規則:



3.lxml案例

為了偷懶,我決定還是採用urllib那篇文章的代碼,哈哈哈,機智如我。

『陸』 python數據挖掘——文本分析

作者 | zhouyue65

來源 | 君泉計量

文本挖掘:從大量文本數據中抽取出有價值的知識,並且利用這些知識重新組織信息的過程。

一、語料庫(Corpus)

語料庫是我們要分析的所有文檔的集合。

二、中文分詞

2.1 概念:

中文分詞(Chinese Word Segmentation):將一個漢字序列切分成一個一個單獨的詞。

eg:我的家鄉是廣東省湛江市-->我/的/家鄉/是/廣東省/湛江市

停用詞(Stop Words):

數據處理時,需要過濾掉某些字或詞

√泛濫的詞,如web、網站等。

√語氣助詞、副詞、介詞、連接詞等,如 的,地,得;

2.2 安裝Jieba分詞包:

最簡單的方法是用CMD直接安裝:輸入pip install jieba,但是我的電腦上好像不行。

後來在這里:https://pypi.org/project/jieba/#files下載了jieba0.39解壓縮後 放在Python36Libsite-packages裡面,然後在用cmd,pip install jieba 就下載成功了,不知道是是什麼原因。

然後我再anaconda 環境下也安裝了jieba,先在Anaconda3Lib這個目錄下將jieba0.39的解壓縮文件放在裡面,然後在Anaconda propt下輸入 pip install jieba,如下圖:

2.3 代碼實戰:

jieba最主要的方法是cut方法:

jieba.cut方法接受兩個輸入參數:

1) 第一個參數為需要分詞的字元串

2)cut_all參數用來控制是否採用全模式

jieba.cut_for_search方法接受一個參數:需要分詞的字元串,該方法適合用於搜索引擎構建倒排索引的分詞,粒度比較細

注意:待分詞的字元串可以是gbk字元串、utf-8字元串或者unicode

jieba.cut以及jieba.cut_for_search返回的結構都是一個可迭代的generator,可以使用for循環來獲得分詞後得到的每一個詞語(unicode),也可以用list(jieba.cut(...))轉化為list代碼示例( 分詞 )

輸出結果為: 我 愛

Python

工信處

女幹事

每月 經過 下屬 科室 都 要 親口

交代

24 口 交換機 等 技術性 器件 的 安裝

工作

分詞功能用於專業的場景:

會出現真武七截陣和天罡北斗陣被分成幾個詞。為了改善這個現象,我們用導入詞庫的方法。

但是,如果需要導入的單詞很多,jieba.add_word()這樣的添加詞庫的方法就不高效了。

我們可以用jieba.load_userdict(『D:PDM2.2金庸武功招式.txt』)方法一次性導入整個詞庫,txt文件中為每行一個特定的詞。

2.3.1 對大量文章進行分詞

先搭建語料庫:

分詞後我們需要對信息處理,就是這個分詞來源於哪個文章。

四、詞頻統計

3.1詞頻(Term Frequency):

某個詞在該文檔中出現的次數。

3.2利用Python進行詞頻統計

3.2.1 移除停用詞的另一種方法,加if判斷

代碼中用到的一些常用方法:

分組統計:

判斷一個數據框中的某一列的值是否包含一個數組中的任意一個值:

取反:(對布爾值)

四、詞雲繪制

詞雲(Word Cloud):是對文本中詞頻較高的分詞,給與視覺上的突出,形成「關鍵詞渲染」,從而國旅掉大量的文本信息,使瀏覽者一眼掃過就可以領略文本的主旨。

4.1 安裝詞雲工具包

這個地址:https://www.lfd.uci.e/~gohlke/pythonlibs/ ,可以搜到基本上所有的Python庫,進去根據自己的系統和Python的版本進行下載即可。

在python下安裝很方便,在anaconda下安裝費了點勁,最終將詞雲的文件放在C:UsersAdministrator 這個目錄下才安裝成功。

五、美化詞雲(詞雲放入某圖片形象中)

六、關鍵詞提取

結果如下:

七、關鍵詞提取實現

詞頻(Term Frequency):指的是某一個給定的詞在該文檔中出現的次數。

計算公式: TF = 該次在文檔中出現的次數

逆文檔頻率(Inverse Document Frequency):IDF就是每個詞的權重,它的大小與一個詞的常見程度成反比

計算公式:IDF = log(文檔總數/(包含該詞的文檔數 - 1))

TF-IDF(Term Frequency-Inverse Document Frequency):權衡某個分詞是否關鍵詞的指標,該值越大,是關鍵詞的可能性就越大。

計算公式:TF - IDF = TF * IDF

7.1文檔向量化

7.2代碼實戰

『柒』 python什麼是文本分析

文本分析是指對文本的表示及其特徵項的選取;文本分析是文本挖掘、信息檢索的一個基本問題,它把從文本中抽取出的特徵詞進行量化來表示文本信息。
而Python有大量庫,例如jieba、jingjia2等能夠對文字進行分析。
通過對問半天呢內容的分析,能夠在短時間知道一段文字的標簽是什麼,情感是什麼等等。

『捌』 python 文本文件處理

簡單的方法是直接做個正則表達式把文件提出來
s=open("file1.txt","rb").read()
import re
files=re.findall("(?isu)file.*?txt",s)
for f in files:
print "/root/usr/%s"%f
這樣不知道能不能滿足你的需求。

『玖』 Python讀取文件內容的方法有幾種

filename=open('i:\\install\\test.txt','r+')#讀取xx路徑xx文件;r+代表的是讀寫並存方式 print filename.read()#讀取所有的文件

『拾』 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()更改工作目錄,使得文件創建在自己指定的位置。

熱點內容
製作產業項目視頻腳本 發布:2025-01-11 04:10:14 瀏覽:184
編程是天賦嗎 發布:2025-01-11 04:10:04 瀏覽:256
軟體編程培訓學院 發布:2025-01-11 04:00:18 瀏覽:845
路虎攬運配置怎麼查詢 發布:2025-01-11 03:42:51 瀏覽:393
仿站源碼 發布:2025-01-11 03:42:05 瀏覽:39
騰訊的雲伺服器 發布:2025-01-11 03:40:47 瀏覽:569
百分之十的演算法 發布:2025-01-11 03:34:30 瀏覽:642
java16進制tostring 發布:2025-01-11 03:24:21 瀏覽:721
mql4c語言 發布:2025-01-11 03:24:20 瀏覽:255
科爾訪問蘇聯 發布:2025-01-11 03:15:47 瀏覽:331