批量txt之ANSI編碼轉UTF-8編碼


這個問題終於解決了,因為要分類,要整自己的數據集,有好多ANSI編碼的很惡心人,也百度了方法,但是到我這就是差那么一點點,說白了就是轉不了,由相關博主推薦的exe小程序也是解決不了問題。

主要參考博客:https://www.cnblogs.com/lxh1208891835/p/9493764.html  https://blog.csdn.net/eydwyz/article/details/56276432 (一類的博客)  https://www.cnblogs.com/123ing/p/4134451.html  https://www.cnblogs.com/LicwStack/p/6877817.html  等等吧

最終自己拼湊思路解決問題:首先我的txt不是所有的都是ANSI編碼,我要判斷txt的編碼,百度此方法;其次找到了ANSI編碼的txt,如何讀取再存儲,並且不改變txt名稱、內容

具體代碼如下:(記錄一下,防止以后再用到,也或許能幫到其他人)

import chardet import os path = "F:\\corpus" # 所有txt存放的文件夾的路徑 files = os.listdir(path) # 讀取所有txt的文件名,包含后綴名 print(files) print(len(files)) for file in files: # 循環所有txt p = path + "\\" + file # 拼接各個txt的路徑 f = open(p, 'rb') # 打開文件,讀取內容,判斷編碼 data = f.read() f.close()
    txtEncoding = chardet.detect(data).get("encoding") if txtEncoding == "GB2312": # 經個人實驗,發現ANSI編碼檢測時為GB2312編碼,所以以此為判斷條件 print(file) with open(p, 'r') as f: # 讀取編碼為ANSI編碼txt的內容,存放到一個變量里 content = f.read() f.close() with open(p, 'w', encoding="utf-8") as f: # 把讀取的內容,存入原txt中,替換原內容 f.write(content) f.close()

經過實驗,可以達到我想要的效果,至此結束!希望可以幫到大家!

                                                                


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM