(unicode错误)'unicodeescape'codec不能解码位置2-3中的字节:truncated \UXXXXXXXX escape& #39;

我试图将CSV文件读入Python (世爵),但我一直得到一个错误。我的代码:

import csv


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

我得到以下错误:

SyntaxError:(unicode error)“unicodesescape”编解码器不能解码字节 在位置2-3:truncated \UXXXXXXXX escape

我尝试用\\/替换\,并尝试在"C..之前放置r,但所有这些事情都不起作用。

2035609 次浏览

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

要解决这个问题,需要转义字符串中的反斜杠。直接的方法是通过双反斜杠:

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

如果不想在字符串中转义反斜杠,并且不需要在字符串中使用转义码或引号,则可以使用"raw"字符串,使用" "就在它前面,像这样:

data = open(r"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")

双\应该适用于Windows,但你仍然需要照顾你在路径中提到的文件夹。它们(除了文件名)都必须存在。否则您将得到一个错误。

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

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

在前面加个r就行了。

例如:

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

它通过中和“by f = open(' f:\\file.csv')”来为我工作。

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

根据字符串字面值:

字符串字面值可以包含在单引号(即'...')或双引号(即"...")中。它们也可以包含在由三个单引号或双引号组成的匹配组中(这些通常称为三引号字符串)。

反斜杠字符(即\)用于转义具有特殊含义的字符,例如换行符、反斜杠本身或引号字符。字符串字面值可以有选择地以字母rR作为前缀。这样的字符串被称为原始字符串,并对反斜杠转义序列使用不同的规则。

三引号字符串中,允许使用保有的换行报价,除非行中的三个未转义的引号终止字符串。

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

所以理想情况下你需要替换这一行:

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

把它看作一个原始字符串。作为一个简单的答案,在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)

在字符串之前添加r。它将普通字符串转换为原始字符串。