如何在我的csv文件中保留unicode字符代码?

2024-09-30 20:34:22 发布

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

我正在处理大量收到的电子邮件,其中许多都有各种表情。我计划对用户评论应用NLP分析,并训练分类器提供相关答案,而不是手动回复数百条此类消息。作为第一步,我解析了所有电子邮件,并将其内容保存在一个名为userMessages的列表中,该列表是我在csv文件中编写的。我计划在csv中添加更多的列用于分析目的,例如用户名、地址、日期和时间,但这与现在的问题无关

下面是我用来将userMessages列表写入名为user-messages.csv的csv文件的代码:

with open('user-messages.csv', 'wb') as myfile:
        wr = csv.writer(myfile, dialect='excel', encoding='utf-8', quoting=csv.QUOTE_ALL)
        for _msg in userMessages:
            wr.writerow([_msg])

这不会因为encoding='utf-8'参数而出错,但是,它会删除/重新编码表情符号,使其不再可追溯,例如采用以下格式:ðŸ˜。理想情况下,我希望csv文件中有原始的unicode代码,例如'\U0001f604'(张嘴微笑的脸和微笑的眼睛),然后用这些代码的(近似)含义替换NLP,以便更好地理解消息的上下文,例如在这个字符('\U0001f604')的情况下,删除代码并添加“微笑”或“快乐”字样

这能实现吗?还是我把事情搞得太复杂了?如有任何建议,将不胜感激。谢谢大家!

编辑:我正在使用Windows,并在Microsoft Excel 2016中打开csv文件


Tags: 文件csv代码消息列表nlp电子邮件wr
1条回答
网友
1楼 · 发布于 2024-09-30 20:34:22

我真的鼓励现在就用它们的含义替换这些Unicode字符,而不是将Unicode保留为字符串(这可以通过添加转义字符\并在以后转换来完成)

使用unicodedata.name()方法可以轻松地将Unicode替换为其含义,如下所示:

import unicodedata

def normalize_unicode(text):
    output = []
    for word in text.split(' '):
        try:
            meaning = unicodedata.name(word).lower()
            output.append(meaning)
        except TypeError:
            output.append(word)
    return " ".join(output)

让我们测试一下这个函数:

>>> x = "I'm happy \U0001f604"
>>> normalize_unicode(x)
I'm happy smiling face with open mouth and smiling eyes

现在,让我们看看如何在代码中使用此方法:

with open('user-messages.csv', 'wb') as myfile:
        wr = csv.writer(myfile, dialect='excel', encoding='utf-8', quoting=csv.QUOTE_ALL)
        for _msg in userMessages:
            wr.writerow([ normalize_unicode(_msg) ])     #<  can be added here
print(normalize_unicode(x))

相关问题 更多 >