“Unicode错误”unicodeescape“编解码器无法解码字节...无法在Python 3中打开文本文件

时间:2009-08-28 15:36:39

标签: python unicode python-3.x

我在Windows 7机器上使用python 3.1。俄语是默认的系统语言,utf-8是默认编码。

查看previous question的答案,我尝试使用“编解码器”模块给我一点运气。以下是一些例子:

>>> g = codecs.open("C:\Users\Eric\Desktop\beeline.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (<pyshell#39>, line 1)
>>> g = codecs.open("C:\Users\Eric\Desktop\Site.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (<pyshell#40>, line 1)
>>> g = codecs.open("C:\Python31\Notes.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 11-12: malformed \N character escape (<pyshell#41>, line 1)
>>> g = codecs.open("C:\Users\Eric\Desktop\Site.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (<pyshell#44>, line 1)

我的最后一个想法是,我认为可能是因为windows将一些文件夹(例如“users”文件夹)“翻译”成俄语(虽然输入“users”仍然是正确的路径),所以我在Python31文件夹中尝试过它。不过,没有运气。有什么想法吗?

10 个答案:

答案 0 :(得分:384)

问题在于字符串

"C:\Users\Eric\Desktop\beeline.txt"

这里,\U启动一个八字符的Unicode转义,例如'\ U00014321`。在你的代码中,转义后跟字符's',这是无效的。

您需要复制所有反斜杠,或者在字符串前加r(以生成原始字符串)。

答案 1 :(得分:20)

Windows上的典型错误,因为默认用户目录是C:\user\<your_user>,因此当您想将此路径用作Python函数的字符串参数时,您会收到Unicode错误,因为\u是一个Unicode转义。此后任何非数字字符都会产生错误。

要解决它,只需加倍反斜杠:C:\\\user\\\<\your_user>...

答案 2 :(得分:16)

使用'r'进行前缀非常有效,但需要使用正确的语法。例如:

passwordFile = open(r'''C:\Users\Bob\SecretPasswordFile.txt''')

此处不需要\\ [双反斜杠] - 保持可读性并且运行良好。

答案 3 :(得分:4)

使用Python 3我遇到了这个问题:

 self.path = 'T:\PythonScripts\Projects\Utilities'

产生了这个错误:

 self.path = 'T:\PythonScripts\Projects\Utilities'
            ^
 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in
 position 25-26: truncated \UXXXXXXXX escape

有效的修复方法是:

 self.path = r'T:\PythonScripts\Projects\Utilities'

似乎'\ U'正在产生错误,并且字符串前面的'r'关闭了失败的八字符Unicode转义(对于原始字符串)。 (这有点过分简化了,但是如果你不关心unicode就行了)

希望这有助于某人

答案 4 :(得分:2)

请参阅openpyxl文档,您可以按照以下方式进行更改。

from openpyxl import Workbook
from openpyxl.drawing.image import Image

wb = Workbook()
ws = wb.active
ws['A1'] = 'Insert a xxx.PNG'
# Reload an image
img = Image(**r**'x:\xxx\xxx\xxx.png')
# Insert to worksheet and anchor next to cells
ws.add_image(img, 'A2')
wb.save(**r**'x:\xxx\xxx.xlsx')

答案 5 :(得分:2)

或者您可以替换&#39; \&#39;用&#39; /&#39;在路上。

答案 6 :(得分:1)

我在python 3.2中遇到了同样的错误。

我有电子邮件发送脚本,并且:

csv.reader(open('work_dir\uslugi1.csv', newline='', encoding='utf-8'))

当我删除文件uslugi1.csv中的第一个字符时,工作正常。

答案 7 :(得分:0)

我遇到了同样的错误,刚刚卸载并再次安装了numpy包,这有效!

答案 8 :(得分:0)

path = pd.read_csv(**'C:\Users\mravi\Desktop\filename'**)

错误是由于提到的路径

添加&#39; r&#39;在路径之前

path = pd.read_csv(**r'C:\Users\mravi\Desktop\filename'**)

这样可以正常工作。

答案 9 :(得分:0)

我遇到了这个错误。 我有一个主要的python脚本,它从另一个第二个python脚本调用函数。 在第一个脚本的结尾,我有一个用''' '''指定的注释块。 由于此注释代码块,我收到此错误。 一旦发现错误,我便多次重复该错误,以确保确实是错误。 我仍然不确定为什么。