【Python】エラー:unicode error “unicodeescape”の原因と解決方法
2020.04.27 /
PythonやDjangoでプログラムを組んでいると予期しないエラーが発生することが多々あります。
そのエラーの1つ、unicode error “unicodeescape”の原因や解決方法について詳しく解説いたします。
エラー内容
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
エラー原因
エラーの原因としては、パスなどの文字列に“\”が使われることによりその文字列がエスケープシーケンスとしてみなされているからです。
Windows の環境では“¥”と文字の組み合わせでエスケープシーケンスを表します。Python で用意されているエスケープシーケンスは\\(バックスラッシュ)や\n(行送り)などがあります。
私がこのエラーが発生したときは、フォルダを指定するパスに
C:\Users\admin\Desktop\Book.xlsx
のようにパスを指定していました。
そのため\Uや\aなどがエスケープシーケンスとしてみなされてしまい、エラーが発生してしまいました。
解決方法
エラーの解決方法には、下記のような方法があります。
raw文字列を使う
raw文字列を使うことによりバックスラッシュ( Windows環境では¥)をエスケープ用の文字ではなく単なる文字として扱うようにしてくれます。
使い方は以下のようにrまたはRを先頭に付けます。
r"文字列“
R”文字列”
\を\\と表記する
バックスラッシュ(Windowsでは\)を表すエスケープシーケンスである”\\”を以下のように使用します。
C:\\Users\\admin\\…
Unix系のようにディレクトリの区切りに”/”を使う
スラッシュを以下のように使用します。
C:/Users/admin/…
上記3つの方法のどれか使用すれば、エラーを解決できます。
もしこれでエラーが解決しない場合は、別のエラー要因がプログラムの中にあるかもしれないです。
まとめ
今回のポイントを以下にまとめます。
パスなどに“¥”が使われている場合、エスケープシーケンスとしてみなされエラーが発生する
raw文字列やスラッシュを用いて、エラーを解決できる
raw文字列やエスケープシーケンスはプログラムを作成するうえで必要となる知識なので、これを機にぜひ覚えてください。