簡體   English   中英

Python 3如何在將UTF-8寫入文件時忽略錯誤

[英]Python 3 How to ignore errors when writing UTF-8 to file

我有以下程序:

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 Codepage 1252。

您可以選擇更改用於源的編碼(使用文本編輯器),在源文件的第一行或第二行聲明源代碼編碼(如錯誤消息所示),或使用ASCII安全轉義序列。

后者可以通過使用\\xhh\\uhhhh \\xhh轉義序列來完成:

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

\\xac\\x00ac (不區分大小寫)對Unicode標准中的相同字符進行編碼,即U + 00AC NOT SIGN代碼點 如果正確編碼為UTF-8,這將使用C2 AC字節序列,但您的.py文件在此時保存為AC

如果您確實知道所使用的編碼但不想更改它,請在文件的開頭添加PEP 263注釋 (頂部的第一行或第二行):

# coding=cp1252

最好的選擇是配置代碼編輯器以將文件另存為UTF-8。 這是Python 3用於讀取源代碼的默認編碼。

這與寫入CSV文件無關,Python甚至無法開始運行您的代碼,因為它無法正確讀取源代碼。

也許你可以使用:

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

作為代碼的第一行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM