string = "Deepika Padukone, Esha Gupta or Yami Gautam - Who's looks hotter and sexier? Vote! - It's ... Deepika Padukone, Esha Gupta or Yami Gautam…. Deepika Padukone, Esha Gupta or Yami Gautam ... Tag: Deepika Padukone, Esha Gupta, Kalki Koechlin, Rang De Basanti, Soha Ali Khan, Yami ... Amitabh Bachchan and Deepika Padukone to be seen in Shoojit Sircar's Piku ..."
fp = open("test.txt", "w+");
fp.write("%s" %string);
运行上面的代码后,我遇到以下错误。
File "encode_error.py", line 1
SyntaxError: Non-ASCII character '\xe2' in file encode_error.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
答案 0 :(得分:6)
字符串定义中有U+2026 HORIZONTAL ELLIPSIS个字符:
... Deepika Padukone, Esha Gupta or Yami Gautam…. ...
^
如果要在源代码中使用任何非ASCII字符,Python要求您声明源代码编码。
您的选择是:
将编码声明为specified in the linked PEP 263。它是一个注释,必须是源文件的第一行或第二行。
您将其设置为取决于您的代码编辑器。如果要保存编码为UTF-8的文件,则注释类似于:
# coding: utf-8
但格式灵活。例如,您也可拼写encoding
,并使用=
代替:
。
用三个点替换水平省略号,如字符串的其余部分所用
\xhh
转义序列以表示编码数据。编码为UTF-8的U + 2026是\xe2\x80\xa6
。答案 1 :(得分:5)
将# coding: utf-8
添加到文件的顶部。
# coding: utf-8
string = "Deepika Padukone, Esha Gupta or Yami Gautam - Who's looks hotter and sexier? Vote! - It's ... Deepika Padukone, Esha Gupta or Yami Gautam…. Deepika Padukone$
fp = open("test.txt", "w+");
fp.write("%s" %string);
说明:
错误是由复制期间非标准字符(如引号(`))替换撇号(')等标准字符引起的。当您从pdf文件复制文本时,它经常发生。差异非常微妙,但就Python而言,存在巨大差异。撇号对于指示文本字符串是完全合法的,但引号不是。
从技术上讲,使用我们想要的任何字符并不完全违法。只是我们必须告诉Python我们正在使用哪种编码,以便它知道如何处理这些非标准字符。将# coding: utf-8
添加到该文件的顶部将告诉python您的编码是utf-8。
UTF-8是一种表示Unicode集中字符的编码格式。它在网上被广泛使用。 Unicode是在许多不同平台上表示和处理文本的行业标准,包括Web,企业软件,打印等.UTF-8是用于编码此字符集的更常用的方法之一。