@Tr3ShKirill
Наблюдатель Вселенной

Как игнорировать символы при чтении csv файла, которые не кодируются в uft-8?

Добрый день!

У меня есть файл csv, который дозаписывается каждый день уже несколько месяцев, в котором есть столбец с текстом. Читаю его обычно:
with open ('groups.csv', 'r', encoding='utf-8') as f:
    df = pd.read_csv(f, sep=';', index_col = False, encoding='utf-8')


Файл именно дозаписывается и до этого момента всё было окей. Ни файл, ни скрипт не трогал, но сегодня чтение началось df = pd.read_csv срабатывать с ошибкой.

Ругается на символы, которые не может перекодировать (строки с такими символами уже давним числом).
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd1 in position 161660: invalid continuation byte
В эксели они просматриваются так:
61fa9563df93b867861616.png

Через Notepad они видятся "xD0", "xD1"

Подскажите, пожалуйста, кто знающий, как такие символы в строке можно вычистить (не строки с ними, а сами эти символы) или как правильно считать csv в данном случае?
Сам файл в кодировке utf-8, читаю его тоже utf-8.

Просьба статьи не скидывать, всё уже облазил
  • Вопрос задан
  • 196 просмотров
Решения вопроса 1
@tigervvin
Прочитайте документация про replace, этот метод заменяет символы как вам надо, например есть строка '98 356', перевести в int мы ее не сможем, так как есть пробел в строке
a = '98 356'
a = replace(' ', '')
print(int(a))
Ответ: 98356

Т.е. в этот метод мы передаем символ, который хотим заменить и символ на который меняем
replace('символ, который хотим заменить', 'символ на который меняем')
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Tr3ShKirill Автор вопроса
Наблюдатель Вселенной
Пока что просто вычистил такие символы через BI
и всё решилось. Но в целом на будущее они могут появляться и хотелось бы их всё же избегать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы