這題考的是怎樣判斷一個字元是否是漢字
剛好,python 有個內建工具可以協助處理— unicodedata,可以透過 import 使用它
unicodedata 可以用來協助分析、處理一個 unicode 字元,在這題中我使用的是 unicodedata.name
這個函數會返回一個 unicode 字符的「名稱」
什麼是 unicode 字符的名稱?
與其說是名稱,更像是備註的概念,這個名稱會紀載該字符的一些特性、用途、意義,例如:
中文「你」的名稱是「CJK Unified Ideograph-4F60」
英文「a」的名稱是「Latin Small Letter A」
日文「の」的名稱是「Hiragana Letter No」
韓文「ㅋ」的名稱是「Hangul Letter Khieukh」
這些資訊可以在這個網站查: Unicode - Compart
這個名稱是有規律的,會在名稱的開頭標記其所屬的語系、主要類別
英文是 Latin
韓文是 Hangul
數字是 Digit
日文有分平假名和片假名,平假名是 Hiragana,片假名是 Katakana
漢字比較特別,因為漢字有許多地區都有在使用,但大家用的又有些重複,有些不重複,所以漢字在 unicode 中被特別拉出來,統稱 CJK
絕大部分的漢字的 unicode 名稱開頭都是 CJK
所以我們只需要檢查每個字元的 unicode 名稱開頭是否是 CJK 即可
if unicodedata.name(chr)[:3] == 'CJK'
這樣就可以特別把漢字挑出來,避免印到其他字符