在做文字資料的清理時,最頭痛就是內含有特殊的字元,諸如一些標點符號 (如”^*/$#)、特殊符號 (如空白、TAB) 甚至,系統控制符號 (如 \n 換行字元、\b 退位字元) 或尚未被定義的編碼。如果是在全英文的環境,要清理字元還算簡單,只需利用 ASCII Code 判斷字元是不是英文或數字即可。最直覺的辦法就是利用 replace() 這個函數以窮舉法去將目標字元移除,例如欲移除字串中的空白、TAB和換行字元可以用下列方式移除: (由於接下來稍為對編碼及語法做簡單的說明,若已熟悉編碼或Python語法可以跳到最後直接參考範例程式) 利用字元編碼清除特殊字元 Python 內建就可以利用 ord() 函數取得字元的實際編碼,反過來也可以利用 chr() 函數將編碼重新轉換成字元。 ▍ 利用 ord() 函數取得字元編碼 同樣得,如果是在英文環境那還算單純,由於 ASCII Code 其實就是對應 0 ~ 255 的數字,例如換行字元 (\n) 等同於 10、TAB 字元等同於 9。所以若只希望保留大小寫英文字元及數字,可以利用 ord() 函數取得字元的編碼,再判斷該字元應該被保留或移除。大寫英文字母 (A-Z) 的編碼分別對應 65~90、小寫英文字母 (a-z) 則為 97~122,而數字 (0-9) 的編碼則是 48~57。清除字元的範例如下,最終 string 的結果會是 'teststring': 當然,也可以把上面的程式改成函數的方式重複使用:...
Python / 如何處裡亞洲文字(Unicode, UTF-8)?以兩個字元計算顯示長度?轉換字串與bytes?
目錄 將 utf-8 字串轉換為 bytes 格式,並計算 bytes 長度 ▍將 utf-8 字串轉換為 bytes 格式,並計算 bytes 長度 使用 encode() 函數可將字串轉換為 bytes 格式,若將 bytes 印出來可以看到字串最前面是以 b'' 開頭顯示表示此為 bytes array。其中可見原本標準的 ASCII 字元能然維持一個 byte 長度,而且直接顯示字元。如果是 Unicode 文字則是用 \x 16進位的方式表示,且以中文字為例在 UTF-8 編碼下是 3 個 bytes 長度。例如:”串”的 Unicode 編碼為 \xe4\xb8\xb2。 若要取得字串的 bytes 總長度,在轉換成 bytes 格式之後可以直接使用 len() 函數取得長度。 Reference How can I...
HTML / 網頁當中的六種空白字元       ‌ ‍ 的差別
在HTML當中,空格 (space) 不僅僅就是空格這麼簡單的事,它其實有六種不同樣的空格。如果你有編輯網頁或在網路上寫文章的經驗,肯定會發現當你連續輸入好幾個空格的時候,它永遠都只會有一個空格,甚至是被當作”無內容”來解析。這是因為瀏覽器在遇到空格的時候,如果它認為這是一串字串,那麼空格就會被當作空格但不會累計,不管你輸入再多個空格它還是只會有一個。 空格在 HTML 當中被視為是特殊符號的一種,在網頁當中如果想要正確的加入空格,就必須用 HTML 的語法輸入。HTML 提供了六種不同種類的空格,其中最大的差異在於寬度上的不同。 1. 不換行空格 No-Break Space,不換行空格。這是最常見的空格,也是一般我們鍵盤按下空白鑑會出現的字元。大部分來說我們只會使用這樣的空白,輸入多次 空格也會累計。 的空格寬度會受字體影響。 2.   半形空格 En Space,半形空格。en 是一個半型字元寬度的單位,寬度為 em 的一半。例如當 16px 大小的字體,半形就是 8px 的寬度。就定義上來說,一個 en 就是小寫字母 n 的寬度,大約是半個中文字寬。 3.   全形空格 Em Space,全形空格。和半形空格同概念,em 是一個全形字元的寬度,如果字體大小是 16px,一個 em 就是 16px,大約等於一個中文字寬。 4.   窄空格 窄空格,顧名思義就是寬度較窄的空格,大約是 1/6 個 em 寬。 5. ‌ 全名是...