SyntaxError:扫描字符串文字时的EOL - UTF-8

时间:2012-06-21 08:49:50

标签: python encoding utf-8

我正在尝试保存我有一些凭据的文件。为了不在文件中清除密码,我使用pycrypto模块对其进行了加密。但是当我尝试用结果字符串保存我的文件时,我有一个错误:

  • 我有第一个将我的文件保存为UTF-8,因为我收到了奇怪的字符(# -*- coding: utf-8 -*-)
  • 但是我仍然遇到一些问题:SyntaxError: EOL while scanning string literal(例如在字符串'tý}DŠÇ{÷­*6Ù·®'上)当我在IDLE中通过F5运行我的代码时(保存就可以了)。

请注意,此字符串可以在IDLE shell中正常使用:

>>> s = 'tý}DŠÇ{÷­*6Ù·®'
>>> s
't\xfd}\x7fD\x8a\xc7{\x17\xf7\xad*6\xd9\xb7\xae'
>>> 
你能帮帮忙吗?谢谢!

编辑:这可能不太清楚:这个字符串是在python程序中,我不是想在外部文件中写它。 另一件事:看起来似乎导致错误的字符(hexa中的\x7f)被SO解释器删除了。

2 个答案:

答案 0 :(得分:2)

除非您明确要求使用字符串格式,否则不应将加密数据视为字符串。十六进制数字;文件应该以二进制模式打开,不应该将这些数据打印到控制台。

答案 1 :(得分:0)

我使用zlib代替(没有真正的加密,但密码不再清晰),这会产生ASCII字符,所以现在没问题......当然这并不能解决我最初的问题,但我花了已经有太多时间试图解决它。感谢Ignacio的回答。