Как я могу расшифровать эту строку в Python?

Я загрузил набор данных сообщений facebook, и он был отформатирован следующим образом:

f\u00c3\u00b8rste student

Это должно быть første student, но я не могу его правильно расшифровать.

Я пытался:

str = 'f\u00c3\u00b8rste student'
print(str)
# 'første student'

str = 'f\u00c3\u00b8rste student'
print(str.encode('utf-8')) 
# b'f\xc3\x83\xc2\xb8rste student'

Но это не сработало.


person vhflat    schedule 03.12.2018    source источник
comment
На самом деле ваша строка: 'første student'   -  person Babak    schedule 04.12.2018
comment
Что ж, я пытаюсь понять, как я могу перейти от «\ u00c3 \ u00b8» к «o», поскольку весь мой набор данных отформатирован таким образом.   -  person vhflat    schedule 04.12.2018
comment
Поместите # -*- coding: utf-8 -*- поверх своего скрипта Python.   -  person Rafael    schedule 04.12.2018
comment
@Babak, когда я открываю его в возвышенном виде, он выглядит как f \ u00c3 \ u00b8rste student. Это не так?   -  person vhflat    schedule 04.12.2018
comment
@Rafael Это не поможет # -*- coding: utf-8 -*- указывает только кодировку файла исходного кода.   -  person quant    schedule 04.12.2018
comment
@Prune, это не дубликат! это совсем не тот вопрос. По какой-то причине мои данные кажутся дважды закодированными и латинскими-1. ARG facebook!   -  person vhflat    schedule 04.12.2018
comment
@Prune Это не проблема кодировки UTF-8. Проблема в том, что есть несколько очень похожих символов, похожих на «ø». Так что да, \ u00f8 такой персонаж, но \xC3\xb8 тоже. Ответ очевиден.   -  person quant    schedule 04.12.2018
comment
Если вы уверены, что исходное имя - første, то я предполагаю, что что-то испортило ваши исходные данные!   -  person Babak    schedule 04.12.2018
comment
@Babak да, я уверен, потому что это мои собственные сообщения в Facebook, которые я скачал. Я нашел этот вопрос, который, как мне кажется, является той же проблемой.   -  person vhflat    schedule 04.12.2018
comment
@vhflat: Сорру; Я снова открылся.   -  person Prune    schedule 04.12.2018
comment
@vhflat да ... похоже, вам нужно кодировать / декодировать между вещами ... надеюсь, ответ Martijn поможет там по ссылке, которую вы разместили?   -  person Jon Clements♦    schedule 04.12.2018
comment
Возможный дубликат Facebook JSON с плохой кодировкой   -  person snakecharmerb    schedule 24.02.2019


Ответы (1)


Чтобы отменить произошедшую ошибку кодирования, вам сначала нужно преобразовать символы в байты с теми же порядковыми номерами путем кодирования в ISO-8859-1 (Latin-1), а затем после этого декодирования как UTF-8:

>>> 'f\u00c3\u00b8rste student'.encode('iso-8859-1').decode('utf-8')
'første student'
person jwodder    schedule 03.12.2018