文字列の正規化
タグクラウドなんか作る時に必要になったので以下を作成&テスト。メソッド regtest() に request が渡されてるのは Django でやってるから。
import unicodedata def regtest(request): data = [ u'あいうえおがぎぐげご', u'アイウエオガギグゲゴ', u'アイウエオガギグゲゴ', u'牛乳石鹸良石鹸', u'ABCDEFGHIJKLMNOPQRSTUVWXYZ', u'abcdefghijklmnopqrstuvwxyz', u'0123456789', u'ABCDEFGHIJKLMNOPQRSTUVWXYZ', u'abcdefghijklmnopqrstuvwxyz', u'0123456789', u'!"#$%&()*+,-./:;', u'<=>?@[\]^_`{|}~ ', u'!”#$%&()*+,−./:;', u'<=>?@[¥]^_‘{|}〜 ', u"'", u"’", u'、。,.・', u'゛゜´`¨^', u' ̄_ヽヾゝゞ〃仝々〆〇', u'ー―‐/\〜‖|…‥', u'‘’“”()〔〕[]{}〈〉《》「」『』【】', u'+−±×÷=≠<>≦≧∞∴', u'♂♀°′″℃¢£§☆★○●◎◇◆□■△▲▽▼※〒', u'→←↑↓〓∈∋⊆⊇⊂⊃∪∩∧∨¬⇒⇔', u'∀∃∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬ʼn♯♭♪†‡¶◯', u'ゎゐゑヮヰヱヴヵヶ', u'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ', u'αβγδεζηθικλμνξοπρστυφχψω', u'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ', u'абвгдеёжзийклмнопрстуфхцчшщъыьэюя', u'─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂', u'①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳', u'ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ', u'㌘㌔㌧', u'㍉㌢㍍', u'㌃㌶', u'㍑㍗㌍', u'㌦㌣㌫', u'㍊㌻', u'㎜㎝㎞', u'㎎㎏', u'㏄㎡', u'㍻㍾㍽㍼', u'〝〟∮∟⊿', u'№㏍℡', u'㊤㊥㊦㊧㊨', u'㈱㈲㈹', ] for val in data : # 元の文字列表示 print val.encode('utf-8') val = val.lower() reg_tag = unicodedata.normalize('NFKC', val) # 正規化後の文字列表示 print reg_tag.encode('utf-8') return None
出力結果。1行目が元の文字列。2行目が正規化後の文字列。
あいうえおがぎぐげご あいうえおがぎぐげご アイウエオガギグゲゴ アイウエオガギグゲゴ アイウエオガギグゲゴ アイウエオガギグゲゴ 牛乳石鹸良石鹸 牛乳石鹸良石鹸 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz 0123456789 0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz 0123456789 0123456789 !"#$%&()*+,-./:; !"#$%&()*+,-./:; <=>?@[\]^_`{|}~ <=>?@[\]^_`{|}~ !”#$%&()*+,−./:; !”#$%&()*+,-./:; <=>?@[¥]^_‘{|}〜 <=>?@[¥]^_‘{|}~ ' ' ’ ’ 、。,.・ 、。,.・ ゛゜´`¨^ ゙ ゚ ́` ̈^  ̄_ヽヾゝゞ〃仝々〆〇 ̄_ヽヾゝゞ〃仝々〆〇 ー―‐/\〜‖|…‥ ー―‐/\~‖|..... ‘’“”()〔〕[]{}〈〉《》「」『』【】 ‘’“”()〔〕[]{}〈〉《》「」『』【】 +−±×÷=≠<>≦≧∞∴ +-±×÷=≠<>≦≧∞∴ ♂♀°′″℃¢£§☆★○●◎◇◆□■△▲▽▼※〒 ♂♀°′′′°C¢£§☆★○●◎◇◆□■△▲▽▼※〒 →←↑↓〓∈∋⊆⊇⊂⊃∪∩∧∨¬⇒⇔ →←↑↓〓∈∋⊆⊇⊂⊃∪∩∧∨¬⇒⇔ ∀∃∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬ʼn♯♭♪†‡¶◯ ∀∃∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∫∫å‰♯♭♪†‡¶◯ ゎゐゑヮヰヱヴヵヶ ゎゐゑヮヰヱヴヵヶ ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ αβγδεζηθικλμνξοπρστυφχψω αβγδεζηθικλμνξοπρστυφχψω αβγδεζηθικλμνξοπρστυφχψω АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ абвгдеёжзийклмнопрстуфхцчшщъыьэюя абвгдеёжзийклмнопрстуфхцчшщъыьэюя абвгдеёжзийклмнопрстуфхцчшщъыьэюя ─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂ ─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂ ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ 1234567891011121314151617181920 ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ iiiiiiivvviviiviiiixx ㌘㌔㌧ グラムキロトン ㍉㌢㍍ ミリセンチメートル ㌃㌶ アールヘクタール ㍑㍗㌍ リットルワットカロリー ㌦㌣㌫ ドルセントパーセント ㍊㌻ ミリバールページ ㎜㎝㎞ mmcmkm ㎎㎏ mgkg ㏄㎡ ccm2 ㍻㍾㍽㍼ 平成明治大正昭和 〝〟∮∟⊿ 〝〟∮∟⊿ №㏍℡ NoKKTEL ㊤㊥㊦㊧㊨ 上中下左右 ㈱㈲㈹ (株)(有)(代)
ミリとか(株)とか分解してくれるんだなあ。