Как обрабатывать необычные символы в операции чтения CSV

#python #python-3.x #pandas #dataframe #csv

#python #python-3.x #pandas #фрейм данных #csv

Вопрос:

У меня есть очень большая электронная таблица Excel, в которой данные должны быть преобразованы в столбцы и т.д., И никаких проблем, за исключением того, что она полна некоторых очень странных символов с французского, португальского. Фрейм данных Panda справляется с любыми проблемами, пока мне не понадобится выводить данные в виде файла CSV

 dframe.to_csv(csvf, header=False)
sourceFile = open(csvf, 'r')
csvdata = sourceFile.read()
with open('output.csv', 'a') as destFile:
    destFile.write(csvdata)
sourceFile.close()

  

Это приводит к ошибке в строке 3:

 File "C:Program Files (x86)pythonlibencodingscp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 3184: character maps to undefined
  

Это я отследил до поля в данных, содержащего TTD ChÔteauneuf-du-Pape 75cl именно этот символ , который, согласно идентификатору Unicode, «U 201D : ПРАВАЯ ДВОЙНАЯ КАВЫЧКА {двойная запятая кавычка}»

Я попытался удалить это в самом фрейме данных с помощью:

 df[self.data_columns[i]] = df[self.data_columns[i]].str.replace('”',' ')
  

Но, похоже, это ничего не дало, поскольку аналогичная строка успешно удаляет ненужные запятые.

Есть ли какой-либо способ справиться с read() проблемой, чтобы она могла справиться с любым символом? Что я нахожу странным, так это то, что остальная часть системы, например, загрузка данных в фрейм данных, манипулирование данными, все в порядке

Комментарии:

1. Попробуйте добавить encoding="utf-8" в to_csv() и обе open() команды. Если вы просматриваете файл, вам нужно использовать приложение, которое может обрабатывать кодировку utf-8.

2. Да, это сработало — большое вам спасибо