當前位置:首頁 » 編程語言 » python文本分類代碼

python文本分類代碼

發布時間: 2022-12-25 07:01:29

『壹』 如何用python對文本進行聚類

實現原理:
首先從Tourist_spots_5A_BD.txt中讀取景點信息,然後通過調用無界面瀏覽器PhantomJS(Firefox可替代)訪問網路鏈接"http://ke..com/",通過Selenium獲取輸入對話框ID,輸入關鍵詞如"故宮",再訪問該網路頁面。最後通過分析DOM樹結構獲取摘要的ID並獲取其值。核心代碼如下:
driver.find_elements_by_xpath("//div[@class='lemma-summary']/div")

PS:Selenium更多應用於自動化測試,推薦Python爬蟲使用scrapy等開源工具。
# coding=utf-8
"""
Created on 2015-09-04 @author: Eastmount
"""

import time
import re
import os
import sys
import codecs
import shutil
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import selenium.webdriver.support.ui as ui
from selenium.webdriver.common.action_chains import ActionChains

#Open PhantomJS
driver = webdriver.PhantomJS(executable_path="G:\phantomjs-1.9.1-windows\phantomjs.exe")
#driver = webdriver.Firefox()
wait = ui.WebDriverWait(driver,10)

#Get the Content of 5A tourist spots
def getInfobox(entityName, fileName):
try:
#create paths and txt files
print u'文件名稱: ', fileName
info = codecs.open(fileName, 'w', 'utf-8')

#locate input notice: 1.visit url by unicode 2.write files
#Error: Message: Element not found in the cache -
# Perhaps the page has changed since it was looked up
#解決方法: 使用Selenium和Phantomjs
print u'實體名稱: ', entityName.rstrip('\n')
driver.get("http://ke..com/")
elem_inp = driver.find_element_by_xpath("//form[@id='searchForm']/input")
elem_inp.send_keys(entityName)
elem_inp.send_keys(Keys.RETURN)
info.write(entityName.rstrip('\n')+'\r\n') #codecs不支持'\n'換行
time.sleep(2)

#load content 摘要
elem_value = driver.find_elements_by_xpath("//div[@class='lemma-summary']/div")
for value in elem_value:
print value.text
info.writelines(value.text + '\r\n')
time.sleep(2)

except Exception,e: #'utf8' codec can't decode byte
print "Error: ",e
finally:
print '\n'
info.close()

#Main function
def main():
#By function get information
path = "BaiSpider\\"
if os.path.isdir(path):
shutil.rmtree(path, True)
os.makedirs(path)
source = open("Tourist_spots_5A_BD.txt", 'r')
num = 1
for entityName in source:
entityName = unicode(entityName, "utf-8")
if u'故宮' in entityName: #else add a '?'
entityName = u'北京故宮'
name = "%04d" % num
fileName = path + str(name) + ".txt"
getInfobox(entityName, fileName)
num = num + 1
print 'End Read Files!'
source.close()
driver.close()

if __name__ == '__main__':
main()

『貳』 如何將文本分類成積極和消極的 python

導入文件很簡單,如果路徑是中文,需要注意,在Windows上需要用Unicode(path,'utf8')轉換路徑名稱

文件中出現大量連續空格、換行符,所以使用正則匹配方法將之替換成一個空格

數字(這里暫且認為數字沒有用處),中文英文標點符號,都沒有用,過濾掉

也可以將他們寫入停用詞,然後全部一並過濾掉

用jieba分詞,遇到空格也會作為一個單詞,分完詞後,將空格全部過濾掉

『叄』 Python基本編碼格式

1、一般來說,聲明編碼格式在腳本中是必需的。2、如果Python源碼文件沒有聲明編碼格式,Python解釋器會默認使用ASCII編碼。但出現非ASCII編碼的字元,Python解釋器就會報錯。

1、Python 採用代碼縮進和冒號( : )來區分代碼塊之間的層次。2、在 Python 中,對於類定義、函數定義、流程式控制制語句、異常處理語句等,行尾的冒號和下一行的縮進,表示下一個代碼塊的開始,而縮進的結束則表示此代碼塊的結束。3、Python 中實現對代碼的縮進,可以使用空格或者 Tab 鍵實現。但無論是手動敲空格,還是使用 Tab 鍵,通常情況下都是採用 4 個空格長度作為一個縮進量(默認情況下,一個 Tab 鍵就表示 4 個空格)。4、對於 Python 縮進規則,初學者可以這樣理解,Python 要求屬於同一作用域中的各行代碼,它們的縮進量必須一致,但具體縮進量為多少,並不做硬性規定。

正確示例代碼:

錯誤示例代碼:

Python中使用 # 進行注釋,我們在使用# 的時候,# 號後面要空一格在行內注釋的時候,中間應該至少加兩個空格

print("你好,世界") # 注釋

** 使用的一般性原則:**

1、在二元運算符兩邊各空一格,算術操作符兩邊的空格可靈活使用,但兩側務必要保持一致2、不要在逗號、分號、冒號前面加空格,但應該在它們後面加(除非在行尾)3、函數的參數列表中,逗號之後要有空格4、函數的參數列表中,默認值等號兩邊不要添加空格5、左括弧之後,右括弧之前不要加添加空格6、參數列表, 索引或切片的左括弧前不應加空格

使用的一般性原則:

1、編碼格式聲明、模塊導入、常量和全局變數聲明、頂級定義和執行代碼之間空兩行2、頂級定義之間空兩行,方法定義之間空一行3、在函數或方法內部,可以在必要的地方空一行以增強節奏感,但應避免連續空行

1、導入總應該放在文件頂部,位於模塊注釋和文檔字元串之後,模塊全局變數和常量之前。

2、導入應該按照從最通用到最不通用的順序分組,分組之間空一行:

3、每個 import 語句只導入一個模塊,盡量避免一次導入多個模塊

命名規范這一塊的大家應該都比較熟悉了,但是不同的編程語言之間的明明規范也是有所區別的~

Python命名建議遵循的一般性原則:

引號使用的一般性原則:

Python跟其他幾個主流編程語言的分號使用區別很大Python的代碼末尾不需要加分號,而Java和C#等都需要添加

不要在行尾添加分號,也不要用分號將兩條命令放在同一行,例如:

Python學習日記

『肆』 python必背入門代碼是什麼

python必背代碼是:

defnot_empty(s):

returnsandlen(s。strip())>0

#returnsands。strip()

#如果直接單寫s。strip()那麼s如果是None,會報錯,因為None沒有strip方法。

#如果s是None,那麼Noneand任何值都是False,直接返回false

#如果s非None,那麼判定s。trip()是否為空。

這樣子filter能過濾到None,"",""這樣的值。

分成兩部分看。第一部分是對長度進行序列。相當於就是range(5)他的結果就是。01234。第二部分就是具體的排序規則。排序規則是用nums的值進行排序,reverse沒申明就是默認升序。就是用nums(0到4)的值進行排序,根據這個結果返回的一個range(5)的數組。

python必背內容:

1、變數。指在程序執行過程中,可變的量。定義一個變數,就會伴隨有3個特徵,分別是內存ID,數據類型和變數值。常量,指在程序執行過程中,不可變的量。一般都用大寫字母定義常量。

2、與程序交互。古時候,我們去銀行取錢,需要有一個銀行業務員等著我們把自己的賬號密碼輸入給他,然後他去進行驗證等成功後,我們再將取款金額輸入,告訴他。

驕傲的現代人,會為客戶提供一台ATM機,讓ATM機跟用戶交互,從而取代人力。然而機器是死的,我們必須為其編寫程序來運行,這就要求我們的編程語言中能夠有一種能與用戶交互,接收用戶輸入數據的機制。

『伍』 python 3 文本處理例子求代碼

#coding:utf-8
#file: FileSplit.py

import os,os.path,time

def FileSplit(sourceFile, targetFolder):
sFile = open(sourceFile, 'r')
number = 1000 #每個小文件中保存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) + '\n')

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")
#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) + '\n')

tFilename = os.path.join(sourceFolder,targetFile + "_rece.txt")
tFile = open(tFilename, 'a+') #創建小文件
tFile.writelines(tList) #將列表保存到文件中
tFile.close()

if __name__ == "__main__" :
Rece("access","access")

『陸』 python簡單的編程代碼

輸入兩個數字,比較大小,然後按照大小輸出

def cmpNum():
a = input("請輸入一個數字:")
b = input("請輸入一個數字:")
if a >= b:
print(a, b)
else:
print(b, a)

cmpNum()

結果一:

請輸入一個數字:159
請輸入一個數字:456
456 159

結果二:
請輸入一個數字:9568
請輸入一個數字:1452
9568 1452

『柒』 Python中的9個代碼小實例!

1、串聯比較

2、串聯函數調用

3、復制列表

4、字典獲取元素值

5、 按值排序字典

6、 For Else

7、列表轉換為逗號分隔的字元串

8、合並字典

9、尋找列表中最大和最小元素的索引

若有不明白的地方,請移步Python視頻教程繼續學習!!

『捌』 TextGrocery,實用的短文本分類Python庫

在目前能看到的文本分類技術中,最好的毋庸置疑就是支持向量機------SVM。
但是在我初次接觸分類技術時,不斷的接觸著演算法原理,分詞,向量化,tf-idf等技術基礎,隨後就是sklearn這樣的超大功能技術包,sklearn有的時候就有一種大材小用的感覺了。
於是在一次機緣巧合中,我遇到了tgrocery,隨後就有一種相見恨晚的感覺。那麼這個怎麼用,有什麼用呢?

我們可以用pip簡單的進行包的安裝

讓文本分類變得簡單!
GitHub傳送門 —> TextGrocery

這個神奇的包,讓我們處理一些類似於標題的短文本的分類問題變得簡單。
相對與sklearn的svm和nb,這個在進行分類的用時更加迅速。

『玖』 6 個值得玩味的 Python 代碼

先選取了 6 個自己認為值得玩味的 python代碼,希望對正在學習 python 的你有所幫助。

1、類有兩個方法,一個是 new,一個是 init,有什麼區別,哪個會先執行呢?

運行結果如下:

再來看另一個例子

運行結果如下:

這里給出官方的解釋: init 作用是類實例進行初始化,第一個參數為 self,代表對象本身,可以沒有返回值。 new 則是返回一個新的類的實例,第一個參數是 cls 代表該類本身,必須有返回值。很明顯,類先實例化才能產能對象,顯然是 new 先執行,然後再 init ,實際上,只要 new 返回的是類本身的實例,它會自動調用 init 進行初始化。但是有例外,如果 new 返回的是其他類的實例,則它不會調用當前類的 init 。下面我們分別輸出下對象 a 和對象 b 的類型:

可以看出,a 是 test 類的一個對象,而 b 就是 object 的對象。

2、map 函數返回的對象

map()函數第一個參數是 fun,第二個參數是一般是 list,第三個參數可以寫 list,也可以不寫,作用就是對列表中 list 的每個元素順序調用函數 fun 。

有沒有發現,第二次輸出 b 中的元素時,發現變成空了。原因是 map() 函數返回的是一個迭代器,並用對返回結果使用了 yield,這樣做的目的在於節省內存。 舉個例子:

執行結果為:

這里如果不用 yield,那麼在列表中的元素非常大時,將會全部裝入內存,這是非常浪費內存的,同時也會降低效率。

3、正則表達式中 compile 是否多此一舉?

比如現在有個需求,對於文本 中國 ,用正則匹配出標簽裡面的「中國」,其中 class 的類名是不確定的。有兩種方法,代碼如下:

這里為什麼要用 compile 多寫兩行代碼呢? 原因是 compile 將正則表達式編譯成一個對象,加快速度,並重復使用。

4、[[1,2],[3,4],[5,6]]一行代碼展開該列表,得出[1,2,3,4,5,6]

5、一行代碼將字元串 "->" 插入到 "abcdefg"中每個字元的中間

這里也建議多使用 os.path.join() 來拼接操作系統的文件路徑。

6、zip 函數

zip() 函數在運算時,會以一個或多個序列(可迭代對象)做為參數,返回一個元組的列表。同時將這些序列中並排的元素配對。zip() 參數可以接受任何類型的序列,同時也可以有兩個以上的參數;當傳入參數的長度不同時,zip 能自動以最短序列長度為准進行截取,獲得元組。

『拾』 python基礎代碼是什麼

代碼:

defnot_empty(s):

returnsandlen(s。strip())>0

#returnsands。strip()

#如果直接單寫s。strip()那麼s如果是None,會報錯,因為None沒有strip方法。

#如果s是None,那麼Noneand任何值都是False,直接返回false

#如果s非None,那麼判定s。trip()是否為空。

這樣子filter能過濾到None,"",""這樣的值。

分成兩部分看。第一部分是對長度進行序列。相當於就是range(5)他的結果就是。01234。第二部分就是具體的排序規則。排序規則是用nums的值進行排序,reverse沒申明就是默認升序。就是用nums(0到4)的值進行排序,根據這個結果返回的一個range(5)的數組。

(10)python文本分類代碼擴展閱讀:

根據PEP的規定,必須使用4個空格來表示每級縮進。使用Tab字元和其它數目的空格雖然都可以編譯通過,但不符合編碼規范。支持Tab字元和其它數目的空格僅僅是為兼容很舊的的Python程序和某些有問題的編輯程序。

Python的函數支持遞歸、默認參數值、可變參數,但不支持函數重載。為了增強代碼的可讀性,可以在函數後書寫「文檔字元串」(Documentation Strings,或者簡稱docstrings),用於解釋函數的作用、參數的類型與意義、返回值類型與取值范圍等。可以使用內置函數help()列印出函數的使用幫助。

熱點內容
羅技g502高級腳本 發布:2025-05-17 17:30:45 瀏覽:217
python解析post請求 發布:2025-05-17 17:27:19 瀏覽:696
社保測算密碼是什麼 發布:2025-05-17 17:25:09 瀏覽:157
phpini修改路徑 發布:2025-05-17 17:19:06 瀏覽:280
mac搭建php開發環境 發布:2025-05-17 17:18:22 瀏覽:782
佟大為關悅上超級訪問 發布:2025-05-17 17:09:50 瀏覽:310
閃迪存儲卡高速 發布:2025-05-17 17:09:14 瀏覽:470
ios文件加密插件 發布:2025-05-17 17:05:48 瀏覽:797
androidbutton自定義 發布:2025-05-17 16:58:34 瀏覽:169
android應用生命周期 發布:2025-05-17 16:53:16 瀏覽:779