Python 3如何在将UTF-8写入文件时忽略错误

时间:2017-05-30 09:23:39

标签: python utf-8

我有以下程序:

with open(r'C:\s_f.csv', 'w', encoding="utf-8", errors="ignore") as outf:
    with open(r'C:\street.csv', 'r', encoding="utf-8", errors="ignore") as f:
        for line in f:
            out_line = line
            out_line = out_line.replace('"','¬')
            out_line = out_line.replace(',','~')
            outf.write(out_line)

由于某些原因,我仍然得到:

File "c:\Program Files\Anaconda3\streets.py", line 5
    SyntaxError: Non-UTF-8 code starting with '\xac' in file c:\Program Files\Anaconda3\streets.py on line 5, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details 

如何忽略Python 3中的UTF-8错误?

2 个答案:

答案 0 :(得分:4)

您已将源代码保存为UTF-8以外的版本,最有可能是Latin-1或Windows Codepage 1252.

您的选择是更改用于源的编码(使用文本编辑器),在源文件的第一行或第二行声明源代码编码(如错误消息所示),或使用ASCII安全逃逸序列。

后者可以通过使用\xhh\uhhhh转义序列来完成:

out_line = out_line.replace('"','\xAC')  # or `'\u00AC'`

\xac\x00ac(不区分大小写)对Unicode标准U+00AC NOT SIGN codepoint中的相同字符进行编码。如果正确编码为UTF-8,则会使用C2 AC字节序列,但此时.py文件仅保存AC

如果您确实知道所使用的编码但不想更改它,请在文件的开头添加PEP 263 comment(顶部的第一行或第二行):

# coding=cp1252

最佳选项是将代码编辑器配置为将文件另存为UTF-8。这是Python 3用于读取源代码的默认编码。

这与写入CSV文件无关,Python甚至无法开始运行您的代码,因为它无法正确读取源代码。

答案 1 :(得分:-1)

也许你可以使用:

# -*- coding: utf-8 -*-

作为代码的第一行