2022年11月14日 星期一

Python : bytes 轉 string

2022年11月14日 星期一

 在 2019 年底時,曾經針對 Plickers 網站,寫了一個可以利用 .csv 檔,批次匯入題庫的小工具「雄 : Chrome : 擴充功能 : Plickers CSV Import」。很久之前,朋友曾經提到它無法正常運作了,當時初步了解,是因為 Plickers 網站有一些改變,API 呼叫的方式及資料結構略有不同,導致舊的程式無法運作。這兩天有訪客留言,又問到同一個問題,剛好這幾天的研究告一個段落了,於是花了一整個下午,找出了新程序異動的地方,將 Chrome 的擴充功能改好,並上載,等候審核後,即可將 Google 商店中的,更新為 0.6 版。

有趣的是,2019年時,是 Python 版出發,才有 JavaScript 版的;這一回則是顛倒過來,先改好 JavaScript 版,才準備更新 Python 版。

本以為應該不難吧!哈!又耗掉了一個晚上,主要是太久沒有研究 Python,對 Python 3 更是陌生,然後就卡在一個小地方,真的是小小的地方:

  • bytes

  • string

哈!還是 JavaScript 的世界單純!當初在 Python 2.7 時,因為使用了:

s.encode('utf-8')

將字串 s 先轉為 utf-8 ,再來進行字串的比對。

原來在 Python 2.7 中正常的語法,到了 Python 3 卻失效了!後來用 print 將內容顯示,才注意關鍵字「bytes」;原來使用「encode('utf-8')」以後,字串就變成「bytes」型態,而不再是 string 了,難怪比對字串都失敗。

好的!那何解?

就再利用 decode 把它變回字串吧!變成:

s.encode('utf-8').decode()

真是的,就這麼簡單,花了一個多小時在找問題。

總算解決問題,順利地將 GitHub 中的程式也更新了。下回再來研究一下,如何在 Plickers 網站中增加有多媒體素材的題庫。

相關文章



沒有留言:

張貼留言

 
雄::gsyan © 2009. Design by Pocket