iT邦幫忙

0

Python 計算詞頻並生成EXCEL檔

不明 2022-12-20 15:29:191173 瀏覽
  • 分享至 

  • xImage

各位不好意思,我又來發問了,目前遇到一個難題想請問大家
https://ithelp.ithome.com.tw/upload/images/20221220/20152717PrZdxEclm0.jpghttps://ithelp.ithome.com.tw/upload/images/20221220/20152717BpDCRBD7qd.jpghttps://ithelp.ithome.com.tw/upload/images/20221220/201527172z3fVj8Eks.jpg
我有許多個資料夾內有許多txt檔,我想要計算每個txt檔案內文字出現的頻率
然後每個txt生成下面excel的這個樣子(產業、公司代碼、名稱、年度、詞、出現次數)
https://ithelp.ithome.com.tw/upload/images/20221220/20152717APjx9ATnrS.jpg
因此我將所有檔案的位置做成一個txt檔要來擷取產業、公司代碼、名稱、年度
https://ithelp.ithome.com.tw/upload/images/20221220/20152717D8GM3eJM4w.jpg
然後再加入詞及出現次數

我參考一些其他人的寫法,可是一直沒有結果,請問有人可以幫幫忙嗎
(我知道我寫得很亂,真的很抱歉)

import os

def walk_files(path,endpoint=None):
    for root,dirs,files in os.walk(path):
        for file in files:
            file_path = os.path.join(root,file)
            folder_name = os.path.basename(os.path.dirname(file_path))
            img_name = os.path.basename(file_path)

path = r"C:\2019-2022\recent_file\frames_cut_3s"
walk_files(path)#擷取檔案


with open("KAM_List_20220421.txt", "r", encoding="utf8") as Input_Company_File:           #讀取上市公司資料檔案清單
    for Input_Company in Input_Company_File:
        Input_File_1 = Input_Company.strip()
        Type = Input_Company.strip().split("_")[0].split("\\")[0]       #產業別
        ID = Input_Company.strip().split("_")[0].split("\\")[1]            #擷取公司代號
        Company = Input_Company.strip().split("_")[1]        #擷取公司名稱
        Year = Input_Company.strip().split("_")[2].split("-")[0]     #擷取資料年分
        Month = Input_Company.strip().split("_")[2].split("-")[1]     #擷取資料月份
        Comment = Input_Company.strip().split("_")[3].split(".")[0]    #擷取資料性質 => 母公司、合併、etc.
        FileType = Input_Company.strip().split("_")[3].split(".")[1]    #擷取txt

import xlsxwriter

result = xlsxwriter.Workbook("C:/Users/123.xlsx")
temp = [result.add_worksheet()]
font = result.add_format({"font_size":12})
for i in range(len(Input_Company_File)):
    c = 0
    for j in Input_Company_File[i]:
        temp[0].write(i,c,j,font)
        c+=1
        temp[0].write(i,c,Input_Company_File[i][j],font)
        c+=1
result.close()
win895564 iT邦研究生 5 級 ‧ 2022-12-20 17:22:54 檢舉
不太了解你的問題是什麼 能否說得明白一點
froce iT邦大師 1 級 ‧ 2022-12-21 10:10:05 檢舉
我會建議你:
不要分檔案來存結果,存在資料庫裡。

就對每一個文字檔裡面的每一個詞當一筆資料,存入你要的關鍵訊息如產業類別、公司名稱之類的,這些應該在迴圈裡都能取到資訊
譬如一筆資料可以表示為:
關鍵查核事項 化學工業 東鹼 2016...

剩下的事你就完全可以透過資料庫操作來處理,包括每個類別的詞條出現次數、詞頻等
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
blanksoul12
iT邦研究生 5 級 ‧ 2022-12-21 09:55:01

ithelp.ithome.com.tw/upload/images/20221220/20152717APjx9ATnrS.jpg
這圖內什麼是關鍵字?
為什麼不直接用 vba 來做?
以下是 VBA, 自己研究一下

Sub aaa()

Set FSO = CreateObject("Scripting.FileSystemObject")
Set folder = FSO.getfolder("C:\Users\abc\Desktop\")
For Each file In folder.Files
    If InStr(file.Name, "txt") > 0 Then
        Set FileToRead = FSO.OpenTextFile(file.Path)
        TextString = FileToRead.ReadAll
        MsgBox UBound(Split(TextString, "關鍵字"))
    End If
Next

End Sub

我要發表回答

立即登入回答