私はWindows 7のマシン上で、Python 3.1を使用しています。ロシア語がデフォルトのシステム言語で、utf-8がデフォルトのエンコーディングです。
前の質問 に対する答えを見てみると、私は「コーデック」モジュールを使用してちょっとした運を得ようとしています。いくつか例を挙げましょう。
>>> g = codecs.open("C:\Users\Eric\Desktop\beeline.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (<pyshell#39>, line 1)
>>> g = codecs.open("C:\Users\Eric\Desktop\Site.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (<pyshell#40>, line 1)
>>> g = codecs.open("C:\Python31\Notes.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 11-12: malformed \N character escape (<pyshell#41>, line 1)
>>> g = codecs.open("C:\Users\Eric\Desktop\Site.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (<pyshell#44>, line 1)
私の最後のアイデアは、windowsが "users"フォルダのようないくつかのフォルダをロシア語に "翻訳する"ということであると思いました( "users"とタイプしても正しいパスですが)。 Python31フォルダそれでも、運はありません。何か案は?
問題は文字列にあります
"C:\Users\Eric\Desktop\beeline.txt"
ここで、\U
は、 '\ U00014321`のように、8文字のUnicodeエスケープを開始します。あなたのコードでは、エスケープの後に文字 's'が続きますが、これは無効です。
すべてのバックスラッシュを複製するか、文字列の先頭にr
を付ける必要があります(生の文字列を生成するため)。
デフォルトのユーザディレクトリはC:\user\<your_user>
なので、Windowsの典型的なエラーです。このパスをPython関数の文字列パラメータとして使用したい場合、\u
がUnicodeエスケープであるという理由だけでUnicodeエラーが発生します。これ以降の数字以外の文字はエラーになります。
それを解決するには、バックスラッシュを2倍にするだけです:C:\\user\\<\your_user>...
接頭辞 'r'は非常にうまく機能しますが、正しい構文にする必要があります。例えば:
passwordFile = open(r'''C:\Users\Bob\SecretPasswordFile.txt''')
ここで\\ [二重円記号]は必要ありません - 読みやすさを維持し、うまく機能します。
Python 3では、私はこの問題を抱えていました:
self.path = 'T:\PythonScripts\Projects\Utilities'
このエラーが発生しました:
self.path = 'T:\PythonScripts\Projects\Utilities'
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in
position 25-26: truncated \UXXXXXXXX escape
うまくいった修正は:
self.path = r'T:\PythonScripts\Projects\Utilities'
'\ U'がエラーを生成していて、文字列の前の 'r'が(生の文字列に対して)失敗した8文字のUnicodeエスケープをオフにしているようです。 (これはちょっと過度に単純化したものですが、Unicodeを気にしなくてもうまくいきます)
これが誰かに役立つことを願っています
または、パス内の「\」を「/」に置き換えることもできます。
Openpyxlのドキュメントを参照して、以下のように変更することができます。
from openpyxl import Workbook
from openpyxl.drawing.image import Image
wb = Workbook()
ws = wb.active
ws['A1'] = 'Insert a xxx.PNG'
# Reload an image
img = Image(**r**'x:\xxx\xxx\xxx.png')
# Insert to worksheet and anchor next to cells
ws.add_image(img, 'A2')
wb.save(**r**'x:\xxx\xxx.xlsx')
私はPython 3.2でこれと同じエラーがありました。
メール送信用のスクリプトがあります。
csv.reader(open('work_dir\uslugi1.csv', newline='', encoding='utf-8'))
ファイルuslugi1.csv
の最初の文字を削除するとうまくいきます。
path = pd.read_csv(** 'C:\ Users\mravi\Desktop\filename' **)
エラーは記載されているパスが原因です。
パスの前に 'r'を追加
path = pd.read_csv(** r'C:\ Users\mravi\Desktop\filename '**)
これはうまくいきます。
私は同じエラーがありました、ちょうどnumpyパッケージをアンインストールして、そして再びインストールしました、それは働きました!
私はこのエラーがありました。私は他の2番目のpythonスクリプトから関数を呼び出すメインのpythonスクリプトを持っています。最初のスクリプトの終わりに、''' '''
で指定されたコメントブロックがありました。このコメント付きコードブロックのため、このエラーが発生しました。私はそれがエラーであることを確認するために見つけたら、エラーを複数回繰り返しました。その理由はまだわかりません。