SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape は、文字列に書いた Windows のパスの \U(C:\Users の部分)が、Unicode の文字を表す記号として読まれたときのエラーです。

path = "C:\Users\taro\data.csv"     # ← \U が「\U + 16進数8桁」として読まれる

直し方は、次の3つのどれかです。

直し方 書き方 向いている場面
① 文字列の前に r を付ける(raw 文字列) r"C:\Users\taro\data.csv" パスをコピーして貼り付けるとき。一番手軽
② \ を / に変える "C:/Users/taro/data.csv" / はエスケープの記号ではない
③ \ を2つ重ねる "C:\\Users\\taro\\data.csv" 短いパス
④ pathlib を使う Path(r"C:\Users\taro") / "data.csv" パスを組み立てるとき

確認環境:Python 3.10・3.11・3.12・3.13・3.14 で、エラー文と結果を確かめました(確認日 2026年10月11日)。エラー文は5つの版で同じでした。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「unicodeescapeエラーの直し方|Windowsのパス」

なぜ \U でエラーになるのか

Python の文字列の中では、\ は「次の文字と組み合わせて特別な文字を表す」記号(エスケープシーケンス)です。

書いた文字 Python の読み方 パスでは
\U + 16進数8桁 Unicode の文字(例:\U0001f40d は 🐍) C:\Users の \Us は16進数でないので エラー
\u + 16進数4桁 Unicode の文字 C:\users(小文字)でも エラー
\x + 16進数2桁 文字コードで指定した文字 C:\xampp で エラー
\N{名前} 名前で指定した文字 D:\Nakamura で エラー
\n・\t・\r・\a・\b・\f・\v 改行・タブなどの制御文字 エラーにならず、別の文字に変わる

Python の公式ドキュメントでは、\U のあとには16進数がちょうど8桁、\u のあとには4桁が必要と説明されています。C:\Users の \U のあとは sers なので、8桁に足りず「truncated(途中で切れた)」と表示されます。

パスによって、エラー文が変わる

確認環境で、パスの書き方ごとのエラー文を確かめました。

書いたパス エラー文の最後の部分
"C:\Users\taro" truncated \UXXXXXXXX escape
"C:\users\taro" truncated \uXXXX escape
"C:\xampp\htdocs" truncated \xXX escape
"D:\Nakamura\a.txt" malformed \N character escape

4つとも (unicode error) 'unicodeescape' で始まり、原因は同じです。position 2-3 は、文字列の中の何文字目でつまずいたか(0 から数える)を表しています。

直し方① raw 文字列(r を付ける)

path = r"C:\Users\taro\data.csv"
print(path)      # C:\Users\taro\data.csv

文字列の前に r を付けると、\ が特別な意味を持たなくなります。 エクスプローラーのアドレスバーからコピーしたパスを、そのまま貼り付けられます。

注意:raw 文字列は \ で終われない

folder = r"C:\Users\taro\"      # 最後が \
SyntaxError: unterminated string literal (detected at line 1); perhaps you escaped the end quote?

raw 文字列でも、最後の \ は閉じる " を打ち消してしまいます(公式ドキュメントにも「raw 文字列は、奇数個の \ で終われない」とあります)。フォルダのパスは、最後の \ を書かないか、pathlib でつなぎます。

書き方 結果
r"C:\Users\taro\" SyntaxError
r"C:\Users\taro" OK(最後の \ を書かない)
r"C:\Users\taro" + "\\" OK

直し方② / 区切りにする

path = "C:/Users/taro/data.csv"

/ はエスケープの記号ではないので、エラーになりません。pathlib の PureWindowsPath は、/ 区切りで書いたパスを Windows のパス(C:\Users\taro\data.csv)として扱えることを確認しました。

直し方④ pathlib でつなぐ

from pathlib import Path

base = Path(r"C:\Users\taro")
path = base / "data" / "sales.csv"      # / でつなぐ

パスを文字列の + でつながず、/ 演算子でつなぐと、区切り文字の付け忘れ・付けすぎを防げます。 pathlib の使い方は、既存の記事「Python pathlibの使い方|ファイル操作逆引き70例と実行結果」で扱っています。

エラーにならずに、パスが壊れる例(要注意)

\U はエラーになるので気づけますが、\n・\t などはエラーにならず、別の文字に変わります。

p = "C:\data\new\test.csv"
print(repr(p), len(p))
'C:\\data\new\test.csv' 18
書いた部分 変わった文字
\n(\new の先頭) 改行
\t(\test の先頭) タブ
\a(\a.txt の先頭) ベル文字(\x07)
\d(\data の先頭) 変わらない(\d のまま)

このパスで open(p) を実行すると、次のように表示されました。

FileNotFoundError: [Errno 2] No such file or directory: 'C:\\data\new\test.csv'

ファイルは存在するのに「見つからない」と表示され、原因に気づきにくい形です。エラー文の中に \n・\t が \\ でなく1本の \ で表示されていたら、文字が変わっています。Windows のパスは、最初から r"..." で書くと、この問題も防げます。

Python 3.12 以降の SyntaxWarning

\d・\w のように、Python が知らない組み合わせは、エラーにならず、そのまま \d として残ります。ただし、版によって警告の出方が違いました。

版 "C:\data\report.csv" の結果
3.10・3.11 警告なし
3.12・3.13 SyntaxWarning: invalid escape sequence '\d'
3.14 SyntaxWarning: "\d" is an invalid escape sequence. Such sequences will not work in the future. Did you mean "\\d"? A raw string is also an option.

公式ドキュメントでは、3.12 から SyntaxWarning になり、将来の版では SyntaxError になると説明されています。今は動いていても、警告が出ているパスや正規表現("\d+" など)は、r"..." に直しておきます。

import re
re.findall("\d+", "a12b3")      # 3.12 以降は SyntaxWarning
re.findall(r"\d+", "a12b3")     # r を付ける

確認の手順(チェックリスト)

順番 確認すること 直し方
1 エラー文に unicodeescape があるか ある → パスの \ が原因
2 エラーの行の文字列に \U・\u・\x・\N があるか r"..." にする
3 パスの最後が \ で終わっていないか 最後の \ を消す、または pathlib
4 FileNotFoundError のパスに \n・\t が見えるか r"..." にする
5 SyntaxWarning が出ていないか 正規表現も r"..." にする

よくある質問

Q. 設定ファイルから読み込んだパスでも起きますか。 A. このエラーは、プログラムの中に直接書いた文字列を Python が読むときだけ起きます。テキストファイルに C:\Users\taro\new.csv と書いて読み込むと、\ はそのまま残りました。ただし JSON は JSON のエスケープの規則があり、"C:\Users\taro" と書くと json.load で JSONDecodeError: Invalid \escape になりました。 JSON では "C:\\Users\\taro" と \ を重ねます。

Q. ファイルが見つからないエラーは、別の原因ですか。 A. パスの \ が正しくても、実行した場所(カレントディレクトリ)によって見つからないことがあります。関連記事の「FileNotFoundError: [Errno 2]の直し方|Python」で扱っています。

まとめ

  • C:\Users の \U が、Unicode の文字の記号として読まれたエラー
  • 直し方は r"C:\Users\..."、/ 区切り、\\、pathlib
  • raw 文字列は \ で終われない
  • \n・\t を含むパスは、エラーにならずに壊れる(FileNotFoundError になる)
  • 3.12 以降は \d などで SyntaxWarning。将来は SyntaxError になる予定

参考・出典

確認日はいずれも 2026年10月11日です。

  • Python ドキュメント「Lexical analysis」(文字列リテラルとエスケープシーケンス):https://docs.python.org/3/reference/lexical_analysis.html
  • Python ドキュメント「pathlib」:https://docs.python.org/3/library/pathlib.html

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「unicodeescapeエラーの直し方|Windowsのパス」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?