Я застреваю, пытаясь избавиться от плохих персонажей в pandas кадре данных. Это автоматический скрипт, который обрабатывает входящие данные, которые необходимо сохранить в cp1252, и я хочу иметь возможность обрабатывать любые проблемные символы на лету, анализируя ошибку. Мне все равно, чем они заменены. Я пробовал миллион вариантов этого и нигде не могу получить (это python 3 pandas 25)
while True:
try:
print('saving')
data.to_csv('total.csv', index=False, quoting=csv.QUOTE_ALL, encoding='cp1252')
break
except UnicodeEncodeError as e:
print(e)
badchar = re.search(r"character (.+?) in", str(e)).group(1)
print('Found bad character, removing. . . ')
uchar = u"{}".format(badchar)
print(uchar)
data = data.replace(uchar.encode('utf-8'), '')
Возвращает:
saving
'charmap' codec can't encode character '\u2264' in position 399: character maps to <undefined>
Found bad character, removing. . .
'\u2264'
saving
'charmap' codec can't encode character '\u2264' in position 399: character maps to <undefined>
Found bad character, removing. . .
'\u2264'
saving
'charmap' codec can't encode character '\u2264' in position 399: character maps to <undefined>
Found bad character, removing. . .
'\u2264'
saving
У меня есть пробовал тонну вариаций:
data = data.replace(uchar, '')
data = data.replace(uchar.encode('utf-8').decode('utf-8'), '')
et c. , ,
Я также пробовал u '\ 2264', u'u \ 2264 '
Я также не могу найти это в кадре данных. Это ничего не возвращает:
for col in data:
if sum(data[col].astype(str).str.contains(u'\2264')) > 0:
print(col)
Любая помощь будет оценена спасибо!