Unicode错误替换不起作用 - Python



我正在尝试用_替换非Unicode字符,但是该程序尽管编译没有错误,但并不能解决问题,我无法确定原因。

import csv
import unicodedata
import pandas as pd
df = pd.read_csv('/Users/pabbott/Desktop/Unicode.csv', sep = ',', 
index_col=False, converters={'ClinetEMail':str, 'ClientZip':str, 
'LocationZip':str, 'LicenseeName': str, 'LocationState':str, 
'AppointmentType':str, 'ClientCity':str, 'ClientState':str})
data = df
for row in data:
for val in row:
try:
val.encode("utf-8")
except UnicodeDecodeError:
replace(val,"_")
data.to_csv('UnicodeExport.csv', sep=',', index=False, 
quoting=csv.QUOTE_NONNUMERIC)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa4 in position 4: invalid start byte

上面的消息(从pd.read_csv抛出(显示该文件未保存在utf-8中。你需要

  • 文件另存为utf-8
  • 或使用正确的编码读取文件。

例如(后一种变体(,将encoding='windows-1252'添加到df = pd.read_csv(…,如下所示:

df = pd.read_csv('/Users/pabbott/Desktop/Unicode.csv', sep = ',', encoding='windows-1252',
index_col=False, converters={'ClinetEMail':str, 'ClientZip':str, 
'LocationZip':str, 'LicenseeName': str, 'LocationState':str, 
'AppointmentType':str, 'ClientCity':str, 'ClientState':str})

然后,您可以省略for row in data: for val in row:循环中try: val.encode("utf-8")的所有内容。

阅读pandas.read_csv:

encodingstr, 默认None

读取/写入时用于 UTF 的编码(例如'utf-8'(。目录 Python 标准编码。

最新更新