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