我正在尝试用_替换非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:
encoding
:str
, 默认None
读取/写入时用于 UTF 的编码(例如
'utf-8'
(。目录 Python 标准编码。