Python 板


LINE

各位前備好 近日BS2要關站 想用python寫一個貼文機器 把備份下來的txt文檔貼到ptt2的個板上 但是在文字編碼上出了問題 以下是貼文部分的code 讀資料夾檔案 for dirPath, dirNames, fileNames in os.walk("./BS2/"): 讀檔 for file in fileNames: print (file) ctrl+p進入發文畫面 tn.write('\x10'.encode('ascii')) time.sleep(1) tn.write("\r\n".encode('big5')) time.sleep(1) 輸入文章標題 tn.write(file.encode('big5')) time.sleep(1) tn.write("\r\n".encode('big5')) time.sleep(1) 開啟備份txt檔並寫入 ftxt = open("./BS2/%s"%file,"r") lines = ftxt.readlines() for line in lines: tn.write(line.encode('big5')) <==主要問題在這列 tn.write("\r\n".encode('big5')) ftxt.close() 等同ctrl+x 文章存檔貼出 tn.write('\x18'.encode('ascii')) time.sleep(1) tn.write("s\r\n0\r\n\r\n".encode('big5') ) time.sleep(1) tn.write('\x0C'.encode('ascii')) time.sleep(1) 問題描述: 如果文章中有用到一些特殊字元(例如表格) big5就吃不進去(會找不到編碼然後程式停止報錯) 如果那邊編碼使用utf-8是不會停止後報錯 但是貼出來的文都變成亂碼 請問這種狀況有解法嗎? 謝謝! --
1F:推 sandwichpope:小妹妹,妳想要成為魔法少女嗎?03/29 20:32
2F:推 sandwichpope:要成為魔法少女的第一步就是要先熟練地使用魔法棒03/29 20:32
3F:推 sandwichpope:大哥哥的這根魔法棒可以讓妳做練習喔03/29 20:32
4F:推 sandwichpope:只要搓一搓,神奇魔法棒就會變長03/29 20:32
5F:推 sandwichpope:再用力搓搓,魔法棒就會產生魔法藥水03/29 20:32
6F:推 sandwichpope:如果喝下魔法藥水,妳就能成為魔法少女了03/29 20:32
--



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.92.63.147
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1465867582.A.70B.html
7F:→ alibuda174: 錯誤訊息? 06/14 09:40
Traceback (most recent call last): File "py_bbs2.py", line 78, in <module> tn.write(line.encode('big5')) UnicodeEncodeError: 'big5' codec can't encode character '\u2554' in position 5: illegal multibyte sequence ※ 編輯: aa4live (140.92.63.147), 06/14/2016 09:52:12
8F:→ alibuda174: 嗯,開檔時加上參數errors='ignore'捨棄那些字元吧 06/14 09:58
9F:→ alibuda174: 要不然就要自己轉換 06/14 09:59
謝謝! 不知道可以這樣忽略XD 雖然文章會有缺漏一點 但是整體而言備份的效果有做到就好.... 感恩~
10F:推 kaichan: 可以試一下 "cp950" 而不是 "big5"。 06/14 11:45
11F:→ kaichan: 像「碁」這個字 cp950 可以轉,big5 不能轉 06/14 11:46
12F:推 kaichan: 你的這個字也可以用 cp950。 "\u2554".encode('cp950') 06/14 11:52
換成CP950後已沒有問題 之前問題主要出在表格的框線上Orz... 感謝~
13F:→ uranusjr: 如果是 BBS 的話通常用 big5-hkscs 可以搞定 06/14 12:50
14F:→ uranusjr: 其實關鍵是你的檔案本身是用什麼編碼存的... 06/14 12:51
生txt檔的程式是直接拿別人的來用 看不出是什麼編碼 不過我再windows的環境執行他應該會是預設的CP950(? 但是CP950能顯示日文感覺一整個怪 (wiki說CP950不含日文,是wiki沒更新還是根本就是我誤會?)
15F:→ uranusjr: CP950 確實不含日文, 我覺得你應該先確實知道它用的編碼 06/14 18:12
16F:→ uranusjr: 最簡單的方法裝個 chardet 就可以試著偵測 06/14 18:12
17F:推 os653: cp950 不含日文沒錯,你有灌 Unicode 補完計畫? 06/14 20:25
18F:→ os653: 有灌的話在 console 能顯示日文,但是是會有問題的日文 06/14 20:25
19F:推 eight0: UAO en/decoder https://is.gd/qdGYrI 06/14 23:39
20F:→ eight0: py3 https://is.gd/opyamH 06/14 23:40
找了一個轉出來含日文的檔案用chardet來測試 結果是這樣 {'encoding': None, 'confidence': 0.0} win7記事本開起來也看不到日文 但是讀檔貼到PTT2個板上顯示是正常的 讀檔是用投兩位推文的方法 ftxt = open("./BS2/%s"%file,"r",encoding='cp950', errors='ignore') 為什麼讀成cp950之後貼到PTT2上面會正常rrrrrr 因為開檔的時候ignore了這些日文的編碼 可是直接貼到P2上他認的出來? 這樣想不知道對不對0.0 ※ 編輯: aa4live (140.92.63.147), 06/15/2016 09:43:02
21F:→ alibuda174: 可以直接提供檔案嗎? 06/15 09:45
http://tinyurl.com/gpd9je3 測試用檔案在這 放在google硬碟上他預覽是正常能顯示的0.0
22F:→ uranusjr: 這個檔案我用 Big 5 HKSCS 可以正常顯示 06/15 12:08
23F:→ alibuda174: 請問為什麼你的檔案編碼是Big5-HKSCS?香港人? 06/15 15:46
24F:推 eight0: 話說既然 tn.write 吃 bytes,直接把檔案讀成 bin 再餵給 06/15 16:26
25F:→ eight0: 它就行了吧? 06/15 16:27
感謝點破盲點XD
26F:→ s860134: 印象中 Big 5 HKSCS 與 Big5-UAO 有些關聯 06/16 00:10
27F:→ s860134: 但是你說要轉貼到PTT2 用 eight0 的方法應該蠻不錯的 06/16 00:17
28F:→ s860134: 不要嘗試去 encode 直接 byte 寫 byte 讀 06/16 00:17
真是一個突破盲點! 這樣就不用去管編碼問題了
29F:→ uranusjr: s860134: UAO 有一部分編碼是照抄 HKSCS 的, 包括假名 06/16 01:06
30F:→ uranusjr: 而 HKSCS 那部分其實是照抄古早的倚天系統用的編碼表 06/16 01:08
再次感謝以上各位大大留言<(_ _)> ※ 編輯: aa4live (140.92.63.147), 06/16/2016 14:45:31
31F:→ alibuda174: 請問,你不管編碼問題的作法,有成功轉貼到ptt2嗎? 06/16 21:17
32F:→ aa4live: 有成功喔! 06/17 00:09
33F:→ s860134: BBS 都是 BIG-UAO 編碼,telnet 本身就是吃 byte 輸入的 06/17 02:43







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP