C
Python検証済み

Error "(unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape" の原因と直し方【Dockerで検証済み】

Error "(unicode error) 'unicodeescape' codec can't decode bytes in position 2-3:… の原因と解決方法。検証済みの解決コマンド付きで、現象→原因→解決→確認の順に最短で直せます。

発生したエラー

エラー出力
Error "(unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape"

結論:まずこれで直ります

Pythonの文字列リテラル内でバックスラッシュ(\)はエスケープシーケンスの開始文字として解釈されます。下の解決コマンドを順に実行すれば直ります。

解決コマンド
cat > /tmp/repro.py << 'EOF'
# 修正方法1: raw文字列 (r-string) を使う
path1 = r"C:\Users\username\Documents\file.txt"
print(path1)

# 修正方法2: スラッシュをエスケープする
path2 = "C:\\Users\\username\\Documents\\file.txt"
print(path2)

# 修正方法3: フォワードスラッシュを使う
path3 = "C:/Users/username/Documents/file.txt"
print(path3)
EOF
python /tmp/repro.py

現象どんなエラーか

次の操作を行うと(検証環境: python:3.11)、上記のエラーが発生します。まずは下の再現コマンドで、同じ状況を再現できることを確認してください。

検証環境:python:3.11

再現コマンド
cat > /tmp/repro.py << 'EOF'
path = "C:\Users\username\Documents\file.txt"
print(path)
EOF
python /tmp/repro.py

原因なぜ起きるのか

Pythonの文字列リテラル内でバックスラッシュ(\)はエスケープシーケンスの開始文字として解釈されます。例えば '\n' は改行、'\t' はタブを意味します。Windowsのファイルパスで使われる '\U' や '\u' はUnicodeエスケープシーケンス(\UXXXXXXXX や \uXXXX)として解釈されようとしますが、後続の文字が有効な16進数でない場合、'unicodeescape' コーデックがデコードできずこのエラーが発生します。 根本的な解決策は3つあります: 1. 文字列の前に 'r' を付けてraw文字列にする(r"C:\Users\...")。raw文字列ではバックスラッシュがエスケープ文字として扱われません。 2. バックスラッシュを二重にしてエスケープする("C:\\Users\\...")。 3. Windowsパスでもフォワードスラッシュ(/)を使う。Pythonおよびほとんどの現代的なWindowsAPIはフォワードスラッシュを受け付けます。 raw文字列(方法1)が最も読みやすく推奨されます。

解決解決手順

修正コマンド
cat > /tmp/repro.py << 'EOF'
# 修正方法1: raw文字列 (r-string) を使う
path1 = r"C:\Users\username\Documents\file.txt"
print(path1)

# 修正方法2: スラッシュをエスケープする
path2 = "C:\\Users\\username\\Documents\\file.txt"
print(path2)

# 修正方法3: フォワードスラッシュを使う
path3 = "C:/Users/username/Documents/file.txt"
print(path3)
EOF
python /tmp/repro.py

確認直ったか確認する

確認コマンド
python /tmp/repro.py | grep -q 'C:' && echo 'OK' && exit 0 || exit 1

動画で見る

この記事の解決手順は実環境で検証しています

山田 英紀(社内SE 5年以上・13業種以上の業務システムを開発/運用)が、 掲載コマンドを検証環境で実行し、再現〜解決〜確認まで通ることを確認しています。

この手順でも直らない・自社の環境で再現する場合

エラー調査・修正から、業務システムの改善までご相談いただけます。

無料で相談する

関連する記事