我已经从facebook请求并下载了所有的messenger数据,我想解析返回的json以进行一些语言分析。
我的问题是,因为我是法国人,所以我的大部分对话都是用法语进行的,而且有很多特殊的字符(微笑也一样):
{
"sender_name": "Antoine",
"timestamp_ms": 1493930091160,
"content": "Comment il est \u00c3\u00a9go\u00c3\u00afste :s",
"type": "Generic"
},
下面是一个例子:在messenger中它拼写:
“注释il est goste:s”
但是如果我使用unicode或utf-8解码unicode字符,我得到的结果是:
“注释il est goste”
当我试图将它们写入控制台时,它会与UnicodeEncodeError一起崩溃。
到目前为止,我的尝试包括很多(坏的)regex和replace:
@staticmethod
def fix_special_char2(string):
if isinstance(string, str):
string = string.replace("'", ' ')
string = string.replace('\u00e2\u0080\u0099', " ")
string = string.replace('\u00c3\u00a9', 'e')
string = string.replace('\u00c3\u00af', 'i')
string = string.replace('\u00c3\u0080', 'a')
string = string.replace('\u00c3\u0087', 'c')
string = string.replace('\u00c3\u00aa', 'e')
string = string.replace('\u00c3\u00a0', 'a')
string = string.replace('\u00e2\u009d\u00a4\u00ef\u00b8\u008f', '<3')
string = string.replace('\u00c3\u0089', 'e')
string = string.replace('\u00e2\u0082\u00ac', ' euros')
string = string.replace('\u00c5\u0093', 'oe')
string = string.replace('\u00c3\u0082', 'a')
string = string.replace('\u00c3\u008a', 'e')
string = string.replace('\u00c3\u0089', 'e')
string = string.replace('\u00e2\u009d\u00a4', '<3')
string = string.replace('\u00c3\u0088', 'e')
string = string.replace('\u00c3\u00a2', 'a')
string = string.replace('\u00c3\u00b4', 'o')
string = string.replace('\u00c3\u00a7', 'c')
string = string.replace('\u00c3\u00a8', 'e')
string = string.replace('\u00c2\u00b0', '°')
string = string.replace('\u00c3\u00b9', 'u')
string = string.replace('\u00c3\u00ae', 'i')
string = re.sub('[^A-Za-z ]+', ' ', string)
string = re.sub('\\u00f0(.*){18}', '', string)
string = re.sub('\\u00f3(.*){18}', '', string)
string = re.sub('([aeiu])\\1{1,}', '\\1', string)
string = re.sub('([aA-zZ])\\1{2,}', '\\1\\1', string)
return string
编辑:可能是以下内容的副本:
Facebook JSON badly encoded
而不是提议的:)