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

标签 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 错误?

最佳答案

您已将源代码保存为 UTF-8 以外的格式,很可能是 Latin-1 或 Windows 代码页 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 甚至无法开始运行您的代码,因为它无法正确读取源代码。

关于Python 3 如何在将 UTF-8 写入文件时忽略错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44258329/

相关文章:

python - 我可以使用 python 中的 gspread 在 Google 电子表格中写入整行吗?

python - 基于类的 View 的实例变量是否持久?

ruby-on-rails - 如何处理 UTF-8 电子邮件 header (如主题 :) using Ruby?

java - utf-8 不可见字符

c# - 如何创建支持 UTF-8 的最简单的 PHP Get API?

python - Matplotlib.savefig 忽略轴并在图像周围绘制黑色边框

python - 如何在 pandas DataFrame 中存储公式而不是值

python - scikit-learn - 根据新输入预测训练模型

python - UnicodeEncodeError : 'utf-8' codec can't encode characters in position 0-15: surrogates not allowed

powershell - Unicode 与 UTF-8