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

Eri*_*ric 223 python unicode python-3.x

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

看看上一个问题的答案,我尝试使用"编解码器"模块给我一点运气.以下是一些例子:

>>> 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)
Run Code Online (Sandbox Code Playgroud)

我最后的想法是,我想这可能已经是Windows的"翻译"几个文件夹,如"用户"文件夹,进入俄罗斯的事实(虽然输入"用户"仍然是正确的路径),所以我试图在Python31文件夹.不过,没有运气.有任何想法吗?

Mar*_*wis 480

问题在于字符串

"C:\Users\Eric\Desktop\beeline.txt"
Run Code Online (Sandbox Code Playgroud)

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

您需要复制所有反斜杠,或者在字符串前加上"C:\Users(以生成原始字符串).

  • 哈哈哈......像我一样,这是一个容易陷入的陷阱.很棒的答案. (33认同)
  • 当我在一段代码中使用三引号''''注释时,我遇到了这个错误.该代码包含一个带有`\ U`的原始字符串.在我试图评论它之前,IE字符串没有给我一个错误.因此,可能首选双反斜杠方法. (5认同)
  • 第三种解决方案(也由@Adam Baylin Autori 提出)是在路径中用 '/' 替换 '\'。Python 将 '\'(Windows 风格)或 '/'(Unix 风格)都理解为目录分隔符。 (3认同)

Jul*_*sar 23

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

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


Fid*_*Bux 20

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

passwordFile = open(r'''C:\Users\Bob\SecretPasswordFile.txt''')
Run Code Online (Sandbox Code Playgroud)

这里不需要\\ [双反斜杠] - 保持可读性并且运行良好.

好!


Rav*_*ina 8

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

该错误是由于提到的路径造成的

'r'在路径前添加

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

这会工作得很好。


小智 7

或者您可以将路径中的 '\' 替换为 '/'。

  • 我建议您参加 [游览] 并访问 [帮助]。您的回答似乎不符合我们的质量标准。您需要详细说明为什么这会起作用,也许创建完整的代码示例。 (4认同)

Mat*_*Cox 6

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

 self.path = 'T:\PythonScripts\Projects\Utilities'
Run Code Online (Sandbox Code Playgroud)

产生此错误:

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

起作用的解决方法是:

 self.path = r'T:\PythonScripts\Projects\Utilities'
Run Code Online (Sandbox Code Playgroud)

似乎'\ U'产生了错误,并且字符串前面的'r'关闭了失败的8个字符的Unicode转义符(对于原始字符串)。(这有点过分简化,但是如果您不关心unicode,它就可以工作)

希望这可以帮助某人

  • 这不会在接受的答案上添加任何内容。 (2认同)

归档时间:

查看次数:

475952 次

最近记录:

6 年,3 月 前