標準装備のunicodedataを使ってみました。
Noneだと何も返さないので空文字列を返すようにしてます。
# -*- coding: utf-8 -*- import unicodedata def zenkaku(s): for s1 in s: if unicodedata.east_asian_width(s1) != 'Na': s = '' break return s s = u'aあa' print zenkaku(s) s = u'aba' print zenkaku(s)
▽2
●
mjy ●100ポイント ベストアンサー |
http://docs.python.jp/2/library/unicodedata.html?highlight=east_asian_width#unicodedata.east_asian_width
http://ja.wikipedia.org/wiki/%E6%9D%B1%E3%82%A2%E3%82%B8%E3%82%A2%E3%81%AE%E6%96%87%E5%AD%97%E5%B9%85
#! /usr/bin/python2 #coding: utf-8 import unicodedata def is_halfwidth(unicode_char): w = unicodedata.east_asian_width(unicode_char) if w=='Na' or w=='N' or w=='H': return True else: return False def del_fullwidth(unicode_string): result = [] for s in unicode_string: if is_halfwidth(s): result.append(s) #本当に削除でなく、Null文字にしたいならば以下を有効に #else: # result.append('\0') return u''.join(result) if __name__ == '__main__': print(del_fullwidth(u'あいう-abc-アイウ-123'))