У меня есть файл, который плохо отформатированный, если я пытаюсь открыть его просто open('data.csv', 'r')
я получаю:Получение ошибки при использовании сплита()
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in
position 4681: character maps to <undefined>
Так что я использовал open('data.csv', 'rb')
вместо и она отлично работает. Затем я попытался передать необходимую информацию в новый файл без успеха с помощью:
with open('datacsv', 'rb') as file, open('new.csv', 'w') as newf:
for f in file:
newf.write(str(f.split(',')[0:5]))
Если я снимаю split()
он записывает данные в новый файл штрафа, но если добавить раскол, который я использую чтобы извлечь первые несколько столбцов я получаю:
TypeError: 'str' does not support the buffer interface
Я попытался предложения здесь TypeError: 'str' does not support the buffer interface, но ни один из них не поможет.
Как еще я могу предотвратить повышение TypeError
?
Какую версию python вы используете? Можете ли вы попробовать python3, с r, а не rb. – pvg
Это python3, если я обойду без 'rb', файл вообще не откроется. – Leb
Это ваша проблема, а не ошибка типа. Вам нужно выяснить, что такое кодировка файла, а затем передать кодировку открытым, например 'open (filename, encoding =" utf8 ")'. переход на rb просто маскирует вашу проблему с корнем. – pvg