web-dev-qa-db-ja.com

(unicode error) 'unicodeescape'コーデックは位置2-3のバイトをデコードできません:切り捨てられた\ UXXXXXXXXエスケープ

.csvファイルをPython(Spyder)に読み込もうとしていますが、エラーが発生し続けます。私のコード:

import csv

data = open("C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
data = csv.reader(data)  
print(data)

次のようなエラーが表示されます。

SyntaxError:(unicode error) 'unicodeescape'コーデックは位置2-3のバイトをデコードできません:切り捨てられた\ UXXXXXXXX escape

\を\または\に置き換えようとしましたが、 "C .. の前にrを付けようとしましたが、これらすべてがうまくいきませんでした。

91
Miesje

このエラーはパスとして通常の文字列を使用しているために発生します。問題を解決するために、次の解決策のいずれかを使用できます。

  1. 通常の文字列の前にrを置くだけで、通常の文字列を生の文字列に変換します。

pandas.read_csv(r"C:\Users\DeePak\Desktop\myac.csv")

2:

pandas.read_csv("C:/Users/DeePak/Desktop/myac.csv")

3:

pandas.read_csv("C:\\Users\\DeePak\\Desktop\\myac.csv")
131

文字列の最初のバックスラッシュは特殊文字として解釈されています。実際にはそれに "U"が続いているため、Unicodeコードポイントの開始として解釈されています。

これを修正するには、文字列のバックスラッシュをエスケープする必要があります。私はPythonを具体的には知りませんが、バックスラッシュを2倍にすることによってそれを行うと思います。

data = open("C:\\Users\\miche\\Documents\\school\\jaar2\\MIK\\2.6\\vektis_agb_zorgverlener")
21
thomasrutter

実際のパスを持つ文字列の前に - rの前に置くことができます。これは、生の文字列を表します。例えば:

data = open(r"C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
13
Mohit Solanki

"C:\\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener"とは対照的に、ドライブの後にファイルパスを"C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener"、つまり二重のバックスラッシュで書いてみてください。

9
Ibrahim Isa

文字列リテラル :による

文字列リテラルは、一重引用符(つまり'...')または二重引用符(つまり"...")で囲むことができます。それらは、3つの一重引用符または二重引用符の一致グループで囲むこともできます(これらは一般に三重引用符付きストリングと呼ばれます)。

バックスラッシュ文字(すなわち\)は、改行、バックスラッシュ自体、または引用文字などの特別な意味を持つ文字をエスケープするために使用されます。文字列リテラルはオプションで文字rまたはRを前に付けることができます。そのような文字列は 生の文字列 と呼ばれ、バックスラッシュのエスケープシーケンスに対して異なる規則を使用します。

トリプルクォート文字列では、3つのエスケープされていない引用符が文字列を終了させることを除いて、非エスケープされた改行quotesが使用できます。

rまたはR接頭辞が存在しない限り、文字列内のエスケープシーケンスは、標準Cで使用されているものと同様の規則に従って解釈されます。

そのため、理想的には次の行を置き換える必要があります。

data = open("C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")

以下のいずれかの文字に。

  • rawプレフィックスと一重引用符(つまり'...')を使う:

    data = open(r'C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener')
    
  • 二重引用符(つまり"...")とバックスラッシュ文字(すなわち\)のエスケープ

    data = open("C:\\Users\\miche\\Documents\\school\\jaar2\\MIK\\2.6\\vektis_agb_zorgverlener")
    
  • 二重引用符(つまり"...")とスラッシュ文字(つまり/)を使う:

    data = open("C:/Users/miche/Documents/school/jaar2/MIK/2.6/vektis_agb_zorgverlener")
    
6
DebanjanB

f = open( 'F:\\ file.csv')で '\'を中和することによって私のために働きました

3
vinod

生の文字列と見なします。簡単な答えです、あなたのwindowsパスの前に r を追加してください。

import csv
data = open(r"C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
data = csv.reader(data)  
print(data)
3

Rを前に置くだけでうまくいきます。

例えば:

  white = pd.read_csv(r"C:\Users\hydro\a.csv")
3
Hydrogirl

二重の\はWindows用には動作するはずですが、あなたはまだあなたがあなたのパスで言及するフォルダーの世話をする必要があります。それらすべて(ファイル名を除く)が存在しなければなりません。それ以外の場合はエラーになります。

0
G4W