Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python facebook消息的未知编码_Python_Json_Python 3.x_Facebook - Fatal编程技术网

Python facebook消息的未知编码

Python facebook消息的未知编码,python,json,python-3.x,facebook,Python,Json,Python 3.x,Facebook,我已经从facebook请求并下载了我所有的messenger数据,我想解析返回的json以进行一些语言分析 我的问题是,因为我是法国人,我的大部分对话都是用法语进行的,而且有很多特殊的角色(微笑者也是如此): 下面是一个示例:在messenger中,它拼写为: “评论:s” 但如果我使用unicode或utf-8解码unicode字符,我得到的结果是: “评论(如有)©goÃste” 当我试图将它们写入控制台时,它会导致UnicodeError崩溃 到目前为止,我的尝试包括许多(坏的)正则表达

我已经从facebook请求并下载了我所有的messenger数据,我想解析返回的json以进行一些语言分析

我的问题是,因为我是法国人,我的大部分对话都是用法语进行的,而且有很多特殊的角色(微笑者也是如此):

下面是一个示例:在messenger中,它拼写为:

“评论:s”

但如果我使用unicode或utf-8解码unicode字符,我得到的结果是:

“评论(如有)©goÃste”

当我试图将它们写入控制台时,它会导致UnicodeError崩溃

到目前为止,我的尝试包括许多(坏的)正则表达式和替换:

@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
@staticmethod
def fix_特殊字符2(字符串):
如果isinstance(字符串,str):
字符串=字符串。替换(“”,“”)
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',“我将使用包
ftfy
来解决此问题


我在安装当前版本时遇到了一些问题,但是它在
pip install”ftfy上运行得非常好。我在
pip install pytest runner
之前运行了
pip install ftfy
获得了最新版本。非常感谢,我将对此进行研究,我不会将其标记为已接受,因为我的目标是理解逻辑在facebook编码的背后,我可以创建一个简单的解码功能,而不必使用整个模块,在这种情况下,这似乎有些过分(也许我正在寻找的功能只是隐藏在ftfy代码中,我会寻找它)@CBroe查看utf8表,\u00c3=>Ã\u00a9=>©那么我应该如何从中得到一个“é”?是的,你是对的,
é
应该编码为
\u00e9
。检查,这解决了同样的问题。谢谢,他看到了我没有看到的东西:éhex代码是\xc3\xa9,而fb生成的unicode是:\u00c3\u00a9,so如果我只是用a\x替换每一个u00出现,会怎么样?
@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
>>> from ftfy import fix_text
>>> fix_text(u'Comment il est \u00c3\u00a9go\u00c3\u00afste :s')
'Comment il est égoïste :s'