我正在尝试将.csv文件读取到Python(Spyder)中,但始终出现错误。我的代码:

import csv

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


我收到以下错误:


SyntaxError:(unicode错误)“ unicodeescape”编解码器可以” t解码位置2-3中的字节
:截断的\ UXXXXXXXX转义


我试图用\或/替换\,并且尝试放置在“ C ..之前,但所有这些都不起作用。

评论

这是否有帮助:stackoverflow.com/questions/904041/…

您的替代解决方案如何不起作用?我希望原始字符串或带/而不是\的字符串都能正常工作。

当我使用双反斜杠时,程序说我要打开的文件不存在。

在将路径C:/ Users / user / Videos更改为C:\ Users \ user \ Videos时,使用'\'正斜杠而不是反斜杠

#1 楼

发生此错误的原因是您使用普通字符串作为路径。您可以使用以下三种解决方案之一来解决问题:
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")


评论


我喜欢第二个选项,它使路径可以跨Windows和Linux移植。感谢Python保护Windows的独特性。

–于申
18年4月24日在16:15

谢啦。第一个答案解决了我的问题,我所要做的就是添加r使我的字符串成为原始字符串。

–塞缪尔·恩德(Samuel Nde)
18年8月26日在7:23



就我而言,第一个\之前只有一个\起作用:C:\\ Users \ DeePak \ Desktop ...

–费里
18年8月26日在11:54



当文件路径为C时,这似乎是一个问题,使用Windows样式“ \”时,使用其他字母不会出现问题

–xgg
18-11-20在15:29

即使使用所有这些选项,它也可能无法工作。请检查您的文件夹和文件权限,是否为只读。我遇到过同样的问题。我改变了同样的办法

–BigData-Guru
8月15日18:34

#2 楼

字符串中的第一个反斜杠被解释为特殊字符,实际上是因为其后跟一个“ U”,它被解释为unicode代码点的开始。转义字符串中的反斜杠。我不特别了解Python,但我猜您可以通过将反斜杠加倍来做到这一点:

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


评论


当我使用双反斜杠时,程序说我要打开的文件不存在。

– Miesje
16年5月24日在9:27

这听起来很有希望,因为这意味着它现在认为字符串有效

–胸骨
16年5月24日在11:49

对。所以下一个问题是,该文件路径不存在。您是否省略了文件扩展名,例如vektis_agb_zorgverlener.txt? Windows资源管理器默认是隐藏文件扩展名,因为它很愚蠢。您可以修复它。

– bobince
16年5月25日在7:02

#3 楼

将其视为原始字符串。答案很简单,在Windows路径前添加r


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



#4 楼

您可以将r放在带有实际路径的字符串前面,这表示原始字符串。例如:

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


评论


为了完整起见,这消除了对字符串中的字符(包括引号)进行转义的功能,因此根本无法将其用于包含引号的字符串,但在此处非常合适。

–胸骨
2月11日在22:47

#5 楼

尝试将文件路径写为"C:\Users\miche\Documents\school\jaar2\MIK.6\vektis_agb_zorgverlener",即在驱动器后面加上双反斜杠,而不是"C:\Users\miche\Documents\school\jaar2\MIK.6\vektis_agb_zorgverlener"

评论


有用 !您能告诉我为什么驱动器工作后双斜杠有效吗?

– ayat ullah sony
19-09-27在9:42

#6 楼

根据字符串文字:

字符串文字可以用单引号(即'...')或双引号(即"...")括起来。也可以将它们括在三个单引号或双引号(通常称为三引号字符串)的匹配组中。 ,例如换行符,反斜杠本身或引号字符。字符串文字可以选择以字母\r为前缀。这样的字符串被称为原始字符串,并为反斜杠转义序列使用不同的规则。存在一个Rr前缀,根据类似于标准C的规则解释字符串中的转义序列。

因此理想情况下,您需要替换以下行:
data = open("C:\Users\miche\Documents\school\jaar2\MIK.6\vektis_agb_zorgverlener")

对于以下任意一个字符:


使用原始前缀和单引号(例如R):
  data = open(r'C:\Users\miche\Documents\school\jaar2\MIK.6\vektis_agb_zorgverlener')



使用双引号(即'...')和转义反斜杠字符(即"..."): >
  data = open("C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")




评论


我不明白您为什么在这里区分单引号和双引号? Python对它们的处理相同。

–snakecharmerb
19年4月28日在14:26

#7 楼

r放在字符串之前,它将普通字符串转换为原始字符串

#8 楼

只需在前面放一个r即可。

例如:

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


#9 楼

它通过f = open('F:\\ file.csv')中和'\'为我工作

#10 楼

double \应该适用于Windows,但是您仍然需要注意路径中提到的文件夹。它们都必须存在(文件名除外)。否则会出现错误。