私は新しく、機械学習を勉強しています。オンラインで見つけたチュートリアルに遭遇しました。プログラムを機能させて理解を深めたいと思います。ただし、CSVファイルをJupyter Notebookにロードする際に問題が発生します。
私はこのエラーを受け取ります:
File "<ipython-input-2-70e07fb5b537>", line 2
student_data = pd.read_csv("C:\Users\xxxx\Desktop\student-intervention-
system\student-data.csv")
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in
position 2-3: truncated \UXXXXXXXX escape
このエラーについてオンラインでチュートリアルをたどりましたが、どれもうまくいきませんでした。誰かがそれを修正する方法を知っていますか?
「\」とutf-8も試しましたが、どれも機能しませんでした。
Anaconda Windows 7の最新バージョンを使用していますPython 3.7
Windowsパスには生の文字列表記を使用します。 python '\'はpythonで意味があります。代わりに次のr "path"のような文字列を試してください:
student_data = pd.read_csv(r"C:\Users\xxxx\Desktop\student-intervention- system\student-data.csv")
それが機能しない場合は、次の方法を試してください。
import os
path = os.path.join('c:' + os.sep, 'Users', 'xxxx', 'Desktop', 'student-intervention-system', 'student-data.csv')
student_data = pd.read_csv(path)
このエラーを回避するには、すべてのバックスラッシュ
\
をフロントスラッシュ/
に置き換えるか、ファイルパス文字列の前にr
を配置します。 フォルダ名が長すぎても問題ありません。
Bohun Mieleckiが述べたように、Windowsでファイル構造を示すために通常使用される\
文字は、文字列内に書き込まれたときに異なる機能を持ちます。
Python3のドキュメントより:バックスラッシュ
\
文字は、改行、バックスラッシュ自体、または引用文字。
これがステートメントに特に影響する方法は、次のとおりです。
student_data = pd.read_csv("C:\Users\xxxx\Desktop\student-intervention-
system\student-data.csv")
\Users
は、エスケープシーケンス\Uxxxxxxxx
に一致します。これにより、xxxxxxxx
はCharacter with 32-bit hex value xxxxxxxx
を参照します。このため、Pythonは32ビットの16進値を見つけようとします。ただし、Users
の-sers
がxxxxxxxx
と一致しないため形式では、エラーが発生します:
SyntaxError:(unicode error) 'unicodeescape' codec ca n't cannot bytes in position 2-3:truncated\UXXXXXXXX escape
コードが機能する理由は、'C:\Users\xxxx\Desktop\project\student-data.csv'
の前にr
を配置したためです。これは、pythonに通常のようにバックスラッシュ文字/
を処理せず、文字列全体をそのまま読み取るように指示します。
これが問題の理解に役立つことを願っています。さらに説明が必要な場合は、お知らせください。
これを試してくださいstudent_data = pd.read_csv("C:/Users/xxxx/Desktop/student-intervention- system/student-data.csv")
。
そのコードのバックスラッシュを置き換えるとうまくいきます。
試す
pd.read_csv('file_name',encoding = "utf-8")