Python 讀取路徑時: ‘unicodeescape’ codec can’t decode bytes in position XXX
在運行以下代碼時,出現錯誤(pandas想要讀取路徑)
// An highlighted block
import pandas as pd
import numpy as np
from pandas import Series,DataFrame
data_train = pd.read_csv("C:\Users\85778\Desktop\caggle\titanic\dataset\train.csv")
data_train.columns
File “”, line 1
data_train = pd.read_csv(“C:\Users\85778\Desktop\caggle\titanic\dataset\train.csv”)
^
SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape
路徑寫錯了
錯誤代碼如下,這兩種寫法都是錯的
data_train = pd.read_csv("C:\Users\85778\Desktop\caggle\titanic\dataset\train.csv")
data_train.columns
data_train = pd.read_csv('C:\Users\85778\Desktop\caggle\titanic\dataset\train.csv')
data_train.columns
原因
加粗文本
window 讀取文件可以用\,但是在字符串中\是被當作轉義字符來使用,所以’d:\a.txt’會被轉義’d:\a.txt’
這是正確路徑,所以不會報錯。
而’C:\Users\85778\Desktop\caggle\titanic\dataset \t rain.csv’中經過轉義之後可能就找不到路徑的資源了, 例如\t可能就轉義成tab鍵了。
解決方法
python在描述路徑時可以有多種方式,現列舉常見的三種:
方式一:轉義的方式
'd:\\a.txt'
方式二:顯式聲明字符串不用轉義
'd:r\a.txt'
方式三:使用Linux的路徑/
'd:/a.txt'
推薦第三種寫法,這在Linux和window下都是行的通的。
解決方法
第一種
data_train = pd.read_csv(r'C:\Users\85778\Desktop\caggle\titanic\dataset\train.csv')
data_train.columns
第二種
data_train = pd.read_csv('C:\\Users\\85778\\Desktop\\caggle\\titanic\\dataset\\train.csv')
data_train.columns
第三種
f = open(r'C:\Users\85778\Desktop\caggle\titanic\dataset\train.csv')
data_train = pd.read_csv(f)
data_train.columns
第四種
data_train = pd.read_csv(r'C:/Users/85778/Desktop/caggle/titanic/dataset/train.csv')(帶不帶r都行)
data_train.columns
運行結果(爲我自己導入的csv文件的各列元素顯示):
Index([‘PassengerId’, ‘Survived’, ‘Pclass’, ‘Name’, ‘Sex’, ‘Age’, ‘SibSp’,
‘Parch’, ‘Ticket’, ‘Fare’, ‘Cabin’, ‘Embarked’],
dtype=‘object’)