Navigation

Related Articles

Back to Latest Articles

変換できない文字が混ざった文字列をShift-JISに変換する


press
変換できない文字が混ざった文字列をShift-JISに変換する

テキストファイルやCSVファイルに書き出す時に文字コードをShift-JISに指定して書き出すとエラーになる場合があります。よく見るのが、-や を変換した時に出るエラーで\uff0dや\xa0と表示されます。

実際にエラーを出してみます。以下のプログラムを実行するとエラーが表示されます。

text = 'よく見るのが、-や を変換した時に出るエラーで\uff0dや\xa0と表示されます。'
text.encode('shift-jis')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
UnicodeEncodeError: 'shift_jis' codec can't encode character '\uff0d' in position 7: illegal multibyte sequence

‘\uff0d’ in position 7とあるので\uff0dが変換できてないということが分かります。

文字コードを変換する際にエラーとなる文字を変更します。

replaceを使って\uff0dを-に変更します。

text = text.replace('\uff0d', '-')
text.encode('shift-jis')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
UnicodeEncodeError: 'shift_jis' codec can't encode character '\xa0' in position 30: illegal multibyte sequence

今度は\xa0が変換できずにエラーになっているので、\xa0を削除します。

text = text.replace('\xa0', '')
text.encode('shift-jis')

無事にShift-JISに変換できました。

b'\x82\xe6\x82\xad\x8c\xa9\x82\xe9\x82\xcc\x82\xaa\x81A-\x82\xe2\x81\x95nbsp;\x82\xf0\x95\xcf\x8a\xb7\x82\xb5\x82\xbd\x8e\x9e\x82\xc9\x8fo\x82\xe9\x83G\x83\x89\x81[\x82\xc5-\x82\xe2\x82\xc6\x95\\\x8e\xa6\x82\xb3\x82\xea\x82\xdc\x82\xb7\x81B'

replaceを続けて書くと変換したい文字を複数変換できます。

text = text.replace('\uff0d', '-').replace('\xa0', '')

当ブログは群馬県でPython / Djangoを中心にウェブアプリケーションを開発している株式会社ファントムが運営しています。

株式会社ファントムへのお問い合わせ




    Show Comments (0)

    Comments

    Related Articles

    Python

    生成したリスト同士を計算する方法

    リストをループで生成してリスト同士を計算する方法です。サンプルでは、[0, 1, 2, 3, 4]のリストを3個生成して計算します。 loopOneで3を代入しているのでリストを3回計算します。loopTwoで5を代入し […]

    Posted on by press
    Python

    複数の画像から動画ファイルを作る

    複数の画像から動画ファイルを作る 前回に続き、今回は複数の画像をまとめて動画ファイルに変換する方法です。gifアニメーションを生成するときはPillowを使いましたが、動画を生成するときはOpenCVを使います。 コード […]

    Posted on by press