Я использую Python 3.7.3 для Centos RHEL Fedora.
Принимая файл CSV, который содержит строки данных байтов.Я могу декодировать эти строки без проблем, кроме случаев, когда строка имеет символ «шестнадцатеричный».
Пример Строка из файла:
b'12010000,NY0400001111121242221121,1,001,Get Apple \x42 Device Soon,2011-04-10 00:01:21\r\n'
Я хотел бы преобразовать данные \ x42 в значение ascii ИЛИ полностью удалить его.
У меня естьпопытался расшифровать его с помощью s.decode ().Но это приводит к ошибке «UnicodeDecodeError: кодек« utf-8 »не может декодировать байт 0x96 в позиции 48: неверный начальный байт»
Я пытался прочитать строку по одному символу за раз, нопоскольку это все еще байт, я не получаю значащую точку данных.
Возможно, пропущено что-то базовое, но я не смог понять это.Есть идеи?
Желаемый результат:
b'12010000,NY0400001111121242221121,1,001,Get Apple B Device Soon,2011-04-10 00:01:21\r\n'
or
b'12010000,NY0400001111121242221121,1,001,Get Apple Device Soon,2011-04-10 00:01:21\r\n'
РЕДАКТИРОВАТЬ: Другие кодировщики заявили, что они могут читать эту строку.Поэтому я решил попробовать другую строку и показать шаг за шагом путь:
>>> read_file=open(old_NME, 'rb')
>>> lines=read_file.readlines()
>>> lines[10]
b'2806817,DE39649173950492739481,9,999,Get Data \x96 Input accepted,2011-09-10 07:37:11\r\n'
>>> s = b'2806817,DE39649173950492739481,9,999,Get Data \x96 Input accepted,2011-09-10 07:37:11\r\n'
>>> s == lines[10]
True
>>> s.decode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in position 48: invalid start byte
>>>