(unicode错误)'unicodeescape'编解码器无法解码2-3位的字节:截断\ UXXXXXXXX转义

Mie*_*sje 141 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)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

SyntaxError :( unicode错误)'unicodeescape'编解码器无法解码2-3位的字节:截断\ UXXXXXXXX转义

我试图用\替换\或用/和我试图在"C ..之前放一个r ..但所有这些东西都不起作用.

小智 192

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

  1. 只需将r普通字符串转换为原始字符串:

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

2:

pandas.read_csv("C:/Users/DeePak/Desktop/myac.csv")
Run Code Online (Sandbox Code Playgroud)

3:

pandas.read_csv("C:\\Users\\DeePak\\Desktop\\myac.csv")
Run Code Online (Sandbox Code Playgroud)

  • 谢啦。第一个答案解决了我的问题。我所做的就是添加 r 以使我的字符串原始。 (4认同)
  • 我喜欢第二个选项,它使路径可以跨Windows和Linux移植。感谢Python保护Windows的独特性。 (3认同)
  • 即使使用所有这些选项,它也可能不起作用。请检查您的文件夹和文件权限以及是否为只读。我遇到过同样的问题。我做了同样的改变并且有效 (2认同)

tho*_*ter 31

字符串中的第一个反斜杠被解释为一个特殊字符,实际上因为它后跟一个"U",它被解释为unicode代码点的开头.

要解决此问题,您需要转义字符串中的反斜杠.我不是专门知道Python,但我猜你是通过加倍反斜杠来实现的:

data = open("C:\\Users\\miche\\Documents\\school\\jaar2\\MIK\\2.6\\vektis_agb_zorgverlener")
Run Code Online (Sandbox Code Playgroud)

  • 这听起来很有希望,因为这意味着它现在认为该字符串是有效的 (3认同)
  • 当我使用双反斜杠时,程序表示我要打开的文件不存在。 (2认同)
  • 正确的。所以下一个问题是,该文件路径不存在。您是否省略了文件扩展名,例如“vektis_agb_zorgverlener.txt”?默认情况下,Windows 资源管理器会向您隐藏文件扩展名,因为这很愚蠢;你可以[修复它](http://windows.microsoft.com/en-gb/windows/show-hide-file-name-extensions)。 (2认同)

Moh*_*nki 14

您可以使用实际路径放在字符串r 前面,这表示原始字符串.例如:

data = open(r"C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
Run Code Online (Sandbox Code Playgroud)

  • 为了完整起见,这消除了字符串中转义字符(包括引号)的能力,因此它根本不能用于包含引号的字符串,但在这里非常合适。 (2认同)

小智 12

尝试将文件路径写为"C:\\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener"ie,在驱动器后使用双反斜杠,而不是"C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener"

  • 有用 !你能告诉我为什么驱动器工作后会出现双斜线吗? (3认同)

Ram*_*eja 12

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

import csv
data = open(r"C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
data = csv.reader(data)  
print(data)
Run Code Online (Sandbox Code Playgroud)


Deb*_*anB 10

根据字符串文字:

字符串文字可以用单引号(即'...')或双引号(即"...")括起来.它们也可以包含在三个单引号或双引号的匹配组中(这些通常称为三引号字符串).

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

三引号字符串中,允许使用未转义的换行符引号,但行中的三个未转义引号将终止该字符串.

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

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

data = open("C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
Run Code Online (Sandbox Code Playgroud)

对于以下任何一个字符:

  • 我不明白你为什么在这里区分单引号和双引号?Python 以相同的方式处理它们。 (2认同)

小智 10

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


Hyd*_*irl 7

只在前面放一个 r 效果很好。

例如:

  white = pd.read_csv(r"C:\Users\hydro\a.csv")
Run Code Online (Sandbox Code Playgroud)