#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. Да, это сработало — большое вам спасибо