Кодировка кириллицы в Facebook JSON файле
Пытаюсь написать в Python скрипт что бы проанализировать сообщения между собой и своей девушкой. Скачал JSON файл с Facebook и весь текст вот в таком формате:
'\u00d0\u00a5\u00d1\u008b\u00d1\u0085\u00d1\u008b\u00d1\u0085\u00d1\u008b'
Я ковырялся вот тут:
https://stackoverflow.com/questions/50008296/facebook-json-badly-encoded https://stackoverflow.com/questions/50826787/decode-or-unescape-u00f0-u009f-u0091-u008d-to https://stackoverflow.com/questions/50799187/encoding-decoding-issue-with-facebook-json-messages-c-sharp-parsing https://stackoverflow.com/questions/54492533/encoding-in-messenger-json
Вот мой код:
import json
import pandas as pd
from datetime import *
with open('messages/message_1.json') as json_data:
data = json.load(json_data)
# delete junk metadata
clean = data['messages']
# turn into a dataframe and print info for reference
df = pd.DataFrame(clean)
print(df.info())
# convert dates from epoch to datetime
df['timestamp_ms'] = pd.to_datetime(df['timestamp_ms']/1000, unit='s')
# decode ascii
df['content'] = df['content'].encode('latin1').decode('utf8')
print(df['content'])
Выдает вот такую ошибку: AttributeError: 'Series' object has no attribute 'encode'
Подскажите пожалуйста куда смотреть и что читать? Ну или решение. Спасибо!
Edit: Вот пример JSON файла.
{
"participants": [
{
"name": "John Doe"
},
{
"name": "Jane Doe"
}
],
"messages": [
{
"sender_name": "John Doe",
"timestamp_ms": 1578752475283,
"content": "\u00d0\u00a5\u00d1\u008b\u00d1\u0085\u00d1\u008b\u00d1\u0085\u00d1\u008b",
"type": "Generic"
},
{
"sender_name": "John Doe",
"timestamp_ms": 1578679368572,
"content": "\u00d0\u00a5\u00d1\u008b\u00d1\u0085\u00d1\u008b\u00d1\u0085\u00d1\u008b",
"type": "Generic"
},
{
"sender_name": "Jane Doe",
"timestamp_ms": 1578678854387,
"content": "\u00d0\u00a5\u00d1\u008b\u00d1\u0085\u00d1\u008b\u00d1\u0085\u00d1\u008b",
"type": "Generic"
},
Ответы (1 шт):
На самом деле я этот вопрос написал специально чтобы на него ответить. Я перерыл пол интернета и потерял кучу времени на чтение документации о кодировке. Если бы я нашел это простое решение еще вчера я бы был дико рад. Надеюсь это кому нибудь когда нибудь поможет.
df['content'] = df['content'].str.encode('latin1').str.decode('utf8')
Вот все что понадобилось что бы дать правильный результат.