如何摆脱python中的ascii编码错误

use*_*743 5 python

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

运行上面的代码后,我得到以下错误.

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

Mar*_*ers 6

您的字符串定义中有一个U + 2026 HORIZONTAL ELLIPSIS字符:

... Deepika Padukone, Esha Gupta or Yami Gautam…. ...
                                               ^
Run Code Online (Sandbox Code Playgroud)

如果要在源中使用任何非ASCII字符,Python要求您声明源代码编码.

您的选择是:

  • 声明编码,如链接的PEP 263中指定的那样.它是一个注释,必须是源文件的第一行或第二行.

    您设置的内容取决于您的代码编辑器.如果要保存编码为UTF-8的文件,则注释类似于:

    # coding: utf-8
    
    Run Code Online (Sandbox Code Playgroud)

    但格式灵活.encoding例如,您也可拼写它,而=不是使用:.

  • 用三个点替换水平省略号,如字符串的其余部分所使用的那样

  • \xhh转义序列替换代码点以表示编码数据.U + 2026编码为UTF-8 \xe2\x80\xa6.


gri*_*ure 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);
Run Code Online (Sandbox Code Playgroud)

说明:

该错误是由复制期间非标准字符(如引号(`))替换撇号(')等标准字符引起的.当您从pdf文件复制文本时,它经常发生.差异非常微妙,但就Python而言,存在巨大差异.撇号对于指示文本字符串是完全合法的,但引号不是.

从技术上讲,使用我们想要的任何字符并不完全违法.只是我们必须告诉Python我们正在使用哪种编码,以便它知道如何处理这些非标准字符.添加# coding: utf-8到该文件的顶部将告诉python您的编码是utf-8.

UTF-8是一种表示Unicode集中字符的编码格式.它在网上被广泛使用.Unicode是用于在许多不同平台上表示和处理文本的行业标准,包括Web,企业软件,打印等.UTF-8是用于编码该字符集的更流行的方式之一.