[英]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.