首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何读取CSV文件中的表情符号?

如何读取CSV文件中的表情符号?
EN

Stack Overflow用户
提问于 2021-06-29 18:30:18
回答 1查看 213关注 0票数 0

我试图在我的句子中阅读表情符号,并给它分配情感价值。我已经找到了一个包含其情感值的表情符号列表,并将其复制到CSV文件中,其中包含表情符号、Unicode值和情感值,如下所示。

当我试图检查这个句子中是否有如下表情符号时,它是有效的:

代码语言:javascript
运行
复制
if "\U0001f914" in sentence:
    print("in")

但是,当我试图遍历创建的CSV文件(表情符号和情感)并检查句子中是否存在表情符号时,它不起作用。

下面是我的代码:

方法1-

代码语言:javascript
运行
复制
for line in lines_emoji:
    senti_emoji_unicode, senti_emoji_score = line.strip().split(',')

    if senti_emoji_unicode in sentence:
        print("in")

方法2-

代码语言:javascript
运行
复制
for line in lines_emoji:
    senti_emoji_unicode, senti_emoji_score = line.strip().split(',')
    senti_emoji_unicode = '"'+senti_emoji_unicode+'"'

    if senti_emoji_unicode in sentence:
        print("in")

下面是根据答案更新的完整代码

代码语言:javascript
运行
复制
file_name_emoji = os.path.dirname(os.path.abspath(__file__)) + '/emoji sentiment.csv'
fo_emoji = open(file_name_emoji, 'r', encoding='utf-8')
lines_emoji = fo_emoji.readlines()
fo_emoji.close()


for line in lines_emoji:
            
   senti_emoji_unicode, senti_emoji_score = line.strip().split(',')
            
   emoji = senti_emoji_unicode.encode('utf-8').decode('unicode_escape')
                
   score = float(senti_emoji_score)
            
   if emoji in sentence:       

       print('--------------------------------------')

我得到的错误是‘独角形转义’编解码器无法解码0-8位置的字节:截断\UXXXXXXXX转义。我见过许多与这个问题相关的帖子,比如添加“r”和“更改”。但是这些修正不能应用在我的场景中,因为我使用的是动态列表。我在下面的场景中尝试用'r‘来设置它。但同样的错误也出现了。

代码语言:javascript
运行
复制
raw_s = "r'{0}'".format(senti_emoji_unicode)
raw = senti_emoji_unicode.encode('utf-8').decode('unicode_escape')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-29 18:51:26

您的数据文件行被读取并分成两个多字符字符串。转义代码不计算,十进制值也不是浮点数。他们必须改变信仰。

可复制的例子:

代码语言:javascript
运行
复制
lines = r'''
\U0001f602,0.221
\U00002764,0.746
'''.strip().splitlines()

for line in lines:
    print(line)

sentence = 'hello ❤'

for line in lines:
    emoji_string,score_string = line.split(',')
    emoji = emoji_string.encode('ascii').decode('unicode_escape')
    score = float(score_string)
    print(emoji,score,emoji in sentence)

输出:

代码语言:javascript
运行
复制
\U0001f602,0.221
\U00002764,0.746
 0.221 False
❤ 0.746 True
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68183945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档