Python全角変換
全角波('~')や,全角マイナス('-')をPythonで扱うための注意!UnicodeからSJISへ変換しようとすると全角波('~')や全角マイナス('-')が存在すると次のようなエラーになってしまう.
UnicodeEncodeError: 'shift_jis' codec can't encode charactor u'\u****' in position **: illegal multibyte sequenceどうやら,対応するコードがないらしい.そのため,適当な文字に変換するとこのエラーは避けられる.
わかってしまえば,簡単なのだが,これに気づくのにとっても苦労した.
サンプルプログラム
def uniuni(str): list = [\ [u'\uFF5E', u'\u301c'], # '~'→'〜' \ [u'\u2225', u'\u2016'], # '∥'→'‖' \ [u'\uff0d', u'\u2212'], # '-'→'−' \ [u'\uFFE0', u'\u00A2'], # '¢'→'¢' \ [u'\uFFE1', u'\u00A3'], # '£'→'£' \ [u'\uFFE2', u'\u00Ac'], # '¬'→'¬' \ ] for lt in list: str = str.replace( lt[0], lt[1] ) return str
サンプルプログラムの使用例
#!/usr/local/bin/python #coding: utf-8 from uniuni import uniuni str = u'~∥-¢£¬' utf = str.encode('utf-8') # OK #sjis = str.encode('sjis') # NG sjis = uniuni( str ).encode('sjis') # OK print sjis
ダウンロード
サンプルプログラムサンプルプログラムの使用例