Python 讀取路徑時: 'unicodeescape' codec can't decode bytes in position XXX

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’)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章