python TK庫 統計word文件單詞詞頻程式 UI選擇文件
import tkinter as tk
import docx
import webbrowser
import winreg
import win32ui
import tkinter.messagebox
from tkinter import *
from tkinter import filedialog
filePath = ''
def get_desktop():
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders') # 利用系統的連結串列
# winreg.QueryValueEx(key, "Desktop")[0] #返回的是Unicode型別資料
Desktop_path = str(winreg.QueryValueEx(key, "Desktop")[0]) # Unicode轉化為str
return Desktop_path
class App:
def __init__(self, width=500, height=300):
self.w = width
self.h = height
self.title = 'count word'
self.root = tk.Tk(className=self.title)
self.url = tk.StringVar()
frame_1 = tk.Frame(self.root)
frame_2 = tk.Frame(self.root)
frame_3 = tk.Frame(self.root)
global label1
play = tk.Button(frame_1, text='選擇檔案', font=('楷體', 12), fg='Purple', width=20, height=10, command=self.get_FileDialogPath)
label1 = tk.Label(frame_2, text="等待您的選擇~"+filePath)
play2 = tk.Button(frame_3, text="開始", font=('楷體', 12), fg='Purple', width=2, height=1, command=self.count)
frame_1.pack()
frame_2.pack()
frame_3.pack()
play.grid(row=0, column=3, ipadx=10, ipady=10)
play2.grid(row=0, column=3, ipadx=10, ipady=10)
label1.grid(row=0, column=0)
def count(self):
excludes = ['the', 'and', 'to', 'of', 'i', 'a', 'in', 'it', 'that', 'is',
'you', 'my', 'with', 'not', 'his', 'this', 'but', 'for',
'me', 's', 'he', 'be', 'as', 'so', 'him', 'your', 'her', 'us', 'are']
def getText():
file = docx.Document(filePath)
txt = '\n'.join([paragraph.text for paragraph in file.paragraphs])
txt = txt.lower()
txt = txt.replace('"', " ")
for ch in "~@#$%^&*()_-+=<>?/,.:;{}[]|\'":
txt = txt.replace(ch, ' ')
return txt
hamletTxt = getText()
words = hamletTxt.split()
counts = {}
sumcount = 0
for word in words:
counts[word] = counts.get(word, 0) + 1
sumcount = sumcount + 1
counts_ex = counts.copy()
for key in counts.keys():
if key in excludes:
counts_ex.pop(key)
items = list(counts_ex.items())
items.sort(key=lambda x: x[1], reverse=True)
for i in range(10):
word, count = items[i]
print('{0:<10}{1:>5}'.format(word, count))
window = tk.Tk()
window.title('outcome')
window.geometry('500x300')
t = tk.Text(window, width=200, height=100,font=('楷體', 30))
t.pack()
lines = []
lines.append('單詞種類:' + str(len(items)) + '\n')
lines.append('單詞總數:' + str(sumcount) + '\n')
lines.append('詞頻排序如下:\n')
lines.append('word\tcounts\n')
s = ''
for i in range(len(items)):
s = '\t'.join([str(items[i][0]), str(items[i][1])])
s += '\n'
lines.append(s)
print('\n統計完成!\n')
out = ' '.join(lines)
t.insert('insert', out)
def center(self):
ws = self.root.winfo_screenwidth()
hs = self.root.winfo_screenheight()
x = int((ws / 2) - (self.w / 2))
y = int((hs / 2) - (self.h / 2))
self.root.geometry('{}x{}+{}+{}'.format(self.w, self.h, x, y))
def loop(self):
# 禁止修改視窗大小
self.root.resizable(False, False)
# 視窗居中
self.center()
self.root.mainloop()
def get_FileDialogPath(self):
global filePath
dlg = win32ui.CreateFileDialog(1) # 1表示開啟檔案對話方塊
dlg.SetOFNInitialDir(get_desktop()) # 設定開啟檔案對話方塊中的初始顯示目錄
dlg.DoModal()
filename = dlg.GetPathName() # 獲取選擇的檔名稱
filePath = filename
label1.config(text='請確認您選擇的檔案:' + filePath)
label1.pack()
if __name__ == '__main__':
app = App() # 例項化APP物件
app.loop() # loop等待使用者事件
相關文章
- [python] LDA處理文件主題分佈及分詞、詞頻、tfidf計算PythonLDA分詞
- python如何統計詞頻Python
- 【python技能】詞頻統計Python
- 詞頻統計
- 文字挖掘之語料庫、分詞、詞頻統計分詞
- spark下統計單詞頻次Spark
- python實現詞頻統計Python
- 詞頻統計mapreduce
- 分析“詞頻統計“專案程式
- 詞頻統計-------------web版本Web
- 詞頻統計任務程式設計實踐程式設計
- python使用jieba實現中文文件分詞和去停用詞PythonJieba分詞
- 個人專案----詞頻統計----單元測試
- Java簡單實現漢語詞頻統計Java
- Python統計四六級考試的詞頻Python
- python 統計文章單詞個數Python
- Java、Scala、Python ☞ 本地WordCount詞頻統計對比JavaPython
- PostgreSQL全文檢索-詞頻統計SQL
- python 計算txt文字詞頻率Python
- Python加密word文件Python加密
- 對文字檔案中的單詞統計出現的次數(即詞頻)並按詞頻的從高到低排序排序
- JAVA技巧:使用java生成word文件選擇合適元件Java元件
- python 統計文章單詞個數-1Python
- python 統計文章單詞個數 -2Python
- 【week2】 詞頻統計效能分析
- Hadoop MapReduce之wordcount(詞頻統計)Hadoop
- Javafx-【直方圖】文字頻次統計工具 中文/英文單詞統計Java直方圖
- 個人專案----詞頻統計WEB(部分功能)Web
- 個人專案----詞頻統計(補全功能)
- Ospaf專案-commits詞頻統計模組MIT
- C++ 統計單詞數C++
- JavaWeb名詞解釋及幫助文件JavaWeb
- 使用map:單詞計數程式
- Linux驅動程式:統計單詞個數Linux
- 用Python如何統計文字檔案中的詞頻?(Python練習)Python
- JSP生成WORD文件,EXCEL文件,PDF文件JSExcel
- Python 將Word/ Exce/ PDF/ PPT文件轉為OFD文件Python
- python 背單詞Python