我试图在我的句子中阅读表情符号,并给它分配情感价值。我已经找到了一个包含其情感值的表情符号列表,并将其复制到CSV文件中,其中包含表情符号、Unicode值和情感值,如下所示。
当我试图检查这个句子中是否有如下表情符号时,它是有效的:
if "\U0001f914" in sentence:
print("in")
但是,当我试图遍历创建的CSV文件(表情符号和情感)并检查句子中是否存在表情符号时,它不起作用。
下面是我的代码:
方法1-
for line in lines_emoji:
senti_emoji_unicode, senti_emoji_score = line.strip().split(',')
if senti_emoji_unicode in sentence:
print("in")
方法2-
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")
下面是根据答案更新的完整代码
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‘来设置它。但同样的错误也出现了。
raw_s = "r'{0}'".format(senti_emoji_unicode)
raw = senti_emoji_unicode.encode('utf-8').decode('unicode_escape')
发布于 2021-06-29 18:51:26
您的数据文件行被读取并分成两个多字符字符串。转义代码不计算,十进制值也不是浮点数。他们必须改变信仰。
可复制的例子:
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)
输出:
\U0001f602,0.221
\U00002764,0.746
0.221 False
❤ 0.746 True
https://stackoverflow.com/questions/68183945
复制相似问题