Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python (unicode错误)和#x27;UnicodeScape';编解码器可以';t解码位置2-3中的字节:截断\uxxxxx转义_Python_Csv_Unicode_Syntax Error - Fatal编程技术网

Python (unicode错误)和#x27;UnicodeScape';编解码器可以';t解码位置2-3中的字节:截断\uxxxxx转义

Python (unicode错误)和#x27;UnicodeScape';编解码器可以';t解码位置2-3中的字节:截断\uxxxxx转义,python,csv,unicode,syntax-error,Python,Csv,Unicode,Syntax Error,我试图将一个.csv文件读入Python(Spyder),但一直出现错误。我的代码: import csv data = open("C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener") data = csv.reader(data) print(data) 我得到以下错误: SyntaxError:(unicode错误)'UnicodeScape'编解码器无法解码字节 在位置2-3:截断\uxxx

我试图将一个.csv文件读入Python(Spyder),但一直出现错误。我的代码:

import csv

data = open("C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
data = csv.reader(data)  
print(data)
我得到以下错误:

SyntaxError:(unicode错误)'UnicodeScape'编解码器无法解码字节 在位置2-3:截断\uxxxxx转义


我曾尝试用\或/替换\并尝试在“C”之前加上一个r。但所有这些都不起作用。

字符串中的第一个反斜杠被解释为一个特殊字符,事实上,因为它后面跟一个“U”,它被解释为unicode代码点的开始

要解决这个问题,您需要对字符串中的反斜杠进行转义。我不太了解Python,但我想您可以通过将反斜杠加倍来实现:

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

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

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

double\应该适用于Windows,但您仍然需要处理路径中提到的文件夹。所有文件夹(除文件名外)都必须存在。否则您将出现错误。

发生此错误的原因是您使用普通字符串作为路径。您可以使用以下三种解决方案之一来解决问题:

1:只需将
r
放在普通字符串之前,即可将普通字符串转换为原始字符串:

pandas.read_csv(r"C:\Users\DeePak\Desktop\myac.csv")
2:

3:


只要在前面放一个r就行了

例如:


它通过f=open('f:\\file.csv')中和“\”而对我有效。

尝试将文件路径写为
“C:\\Users\miche\Documents\school\jaar2\MIK\2.6\vektis\u agb\u zorgverlener”
即在驱动器后加上双反斜杠,而不是
“C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis\u agb\u zorgverlener”“

根据:

字符串文字可以用单引号括起来(即,
“…”
)或双引号括起来(即,
“…”
)。它们也可以包含在三个单引号或双引号(通常称为三引号字符串)的匹配组中

反斜杠字符(即
\
)用于转义具有特殊含义的字符,如换行符、反斜杠本身或引号字符。字符串文本可以选择前缀字母
r
r
。此类字符串称为原始字符串,并对反斜杠转义序列使用不同的规则

在三重引号字符串中,允许使用未转换的换行符和引号,但一行中的三个未转换的引号终止字符串

除非存在
r
r
前缀,否则字符串中的转义序列将根据与标准C使用的规则类似的规则进行解释

因此,理想情况下,您需要更换线路:

data = open("C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
到以下任一字符:

  • 使用原始前缀和单引号(即
    “…”
    ):

  • 使用双引号(即,
    “…”
    )和转义反斜杠字符(即,
    \
    ):

  • 使用双引号(即,
    “…”
    )和正斜杠字符(即,
    /
    ):


    • 将其视为原始字符串。只需简单回答,在windows路径之前添加
      r


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

      这是否有帮助:您的替代解决方案如何不起作用?我希望要么是一根粗线,或者使用
      /
      而不是“\`”的字符串就可以正常工作。当我使用双反斜杠时,程序会说我要打开的文件不存在。请使用“\”正斜杠而不是反斜杠,同时指定路径C:/Users/user/Videos更改为C:\Users\user\Videos当我使用双反斜杠时,程序会说文件不存在“想要打开”不存在。这听起来很有希望,因为这意味着它现在认为字符串是有效的。所以下一个问题是,该文件路径不存在。您是否省略了文件扩展名,例如
      vektis\u agb\u zorgverlener.txt
      ?默认情况下,Windows资源管理器会对您隐藏文件扩展名,因为它很愚蠢;不过你可以。我喜欢第二个选项,它使path可以在Windows和Linux之间移植。感谢Python屏蔽了Windows的特性。谢谢你。第一个答案解决了我的问题。我所做的只是添加r使我的字符串变为原始。在我的例子中,在第一个之前只有一个\有效:C:\\Users\DeePak\Desktop…当文件路径为C时,这似乎是一个问题,使用其他字母在使用windows样式“\”时不会出现问题,即使有所有这些选项,它也可能不起作用。请检查您的文件夹和文件权限以及它是否为只读。我也有同样的问题。我改变了同样的方法,但效果很好。我不明白你为什么在这里区分单引号和双引号?Python以相同的方式处理它们。它可以工作!您能告诉我为什么驱动器后的双斜杠可以工作吗?为了完整起见,这会删除字符串中转义字符(包括引号)的功能,因此它不能用于包含引号的字符串,但在这里非常合适。
      pandas.read_csv("C:\\Users\\DeePak\\Desktop\\myac.csv")
      
        white = pd.read_csv(r"C:\Users\hydro\a.csv")
      
      data = open("C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
      
        data = open(r'C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener')
      
        data = open("C:\\Users\\miche\\Documents\\school\\jaar2\\MIK\\2.6\\vektis_agb_zorgverlener")
      
        data = open("C:/Users/miche/Documents/school/jaar2/MIK/2.6/vektis_agb_zorgverlener")
      
      import csv
      data = open(r"C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
      data = csv.reader(data)  
      print(data)