在python中对格式错误的表情进行编码

2024-10-01 13:28:02 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑

我有一个文本文件,其中包含我无法正确处理的句子,包括表情符号

我的csv文件包含以下句子:

  • 我是某些人,他们的文件是由cette承载的unicode-d83d\ude02

  • Aurelie Gouverneur对unicode-d83d\ude02unicode-d83d\ude02unicode-d83e\udd2e的评价

  • Mélanie Ham Même ce prendre en photo avec unicode-d83e\udd23

我的代码:

df_test=pd.read_csv("myfile.csv", sep=';',index_col=None, encoding="utf-8")

for item, row in df_test.iterrows():
    print(repr(row["Message"]))
    s=row["Message"]
    s = re.sub(r'unicode-([0-9a-f]{4})',lambda m: chr(int(m.group(1),16)),s)
    s = s.encode('utf16','surrogatepass').decode('utf16')

打印结果:

'Je suis sur que certaines personnes vont faire la file pour toucher cette borne unicode-d83d\\ude02'
---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-40-e3c423a15acd> in <module>
      5     s=row["Message"]
      6     s = re.sub(r'unicode-([0-9a-f]{4})',lambda m: chr(int(m.group(1),16)),s)
----> 7     s = s.encode('utf16','surrogatepass').decode('utf16')

UnicodeDecodeError: 'utf-16-le' codec can't decode bytes in position 162-163: illegal UTF-16 surrogate

这个问题可能与我将csv加载到数据帧时的编码有关,但我不知道如何解决这个问题


Tags: 文件csvinmessagedfunicode句子row
1条回答
网友
1楼 · 发布于 2024-10-01 13:28:02

文本是Unicode转义和自定义语法的组合。这将通过捕获两个转义码的十六进制值进行解码,然后将它们格式化为一对JSON格式的代理,并让该模块转换为正确的Unicode代码点

#coding:utf8
import re
import json

sentences = [r'Je suis sur que certaines personnes vont faire la file pour toucher cette borne unicode-d83d\ude02',
             r'Aurelie Gouverneur voir même la lechée peut être unicode-d83d\ude02unicode-d83d\ude02unicode-d83e\udd2e',
             r'Mélanie Ham même ce prendre en photo avec unicode-d83e\udd23']

def surrogates_to_unicode(m):
    upper = int(m.group(1),16)
    lower = int(m.group(2),16)
    return json.loads(f'"\\u{upper:04x}\\u{lower:04x}"')

for s in sentences:
    s = re.sub(r'unicode-([0-9a-f]{4})\\u([0-9a-f]{4})',surrogates_to_unicode,s)
    print(s)
Je suis sur que certaines personnes vont faire la file pour toucher cette borne 😂
Aurelie Gouverneur voir même la lechée peut être 😂😂🤮
Mélanie Ham même ce prendre en photo avec 🤣

相关问题 更多 >