为了账号安全,请及时绑定邮箱和手机立即绑定

“Unicode错误”独角兽编解码器无法解码字节…无法在Python3中打开文本文件

“Unicode错误”独角兽编解码器无法解码字节…无法在Python3中打开文本文件

森林海 2019-06-25 14:25:06
“Unicode错误”独角兽编解码器无法解码字节…无法在Python3中打开文本文件我在Windows 7机器上使用python3.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)我的最后一个想法是,我想可能是因为Windows将一些文件夹(例如“用户”文件夹)“翻译”成俄语(尽管输入“用户”仍然是正确的路径),所以我在Python 31文件夹中试了一下。不过,没有运气。有什么想法吗?
查看完整描述

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

问题在于字符串

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

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

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


查看完整回答
反对 回复 2019-06-25
?
智慧大石

TA贡献1946条经验 获得超3个赞

Windows上典型的错误,因为默认的用户目录是C:\user\<your_user>,因此,当您希望将此路径用作Python函数中的字符串参数时,您将得到一个Unicode错误,这仅仅是因为\u是Unicode转义。在此之后,任何字符(而不是数字)都会产生错误。

要解决这个问题,只需将反斜杠翻一番:C:\\user\\<\your_user>...


查看完整回答
反对 回复 2019-06-25
?
繁花如伊

TA贡献2012条经验 获得超12个赞

在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’关闭了失败的8个字符Unicode转义(对于一个原始字符串)。(这有点过于简单化了,但如果您不关心Unicode,它就会起作用)

希望这能帮到别人


查看完整回答
反对 回复 2019-06-25
  • 3 回答
  • 0 关注
  • 918 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信