总结表情符号长度

2024-05-18 12:34:51 发布

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

我有emoji列表,希望通过将每行列表中的所有emoji的长度相加,然后将每行中的列表编码为“utf-16be”,并将其除以2来生成一个新变量

您可以使用下面的代码复制我的代码

import pandas as pd
import emoji
import re

e_1 = emoji.emojize(":thinking_face:")
e_2 = emoji.emojize(":see-no-evil_monkey:")
e_3 = emoji.emojize(":relieved_face:")
e_4 = emoji.emojize(":two_hearts:")
e_5 = emoji.emojize(":two_women_holding_hands:")
e_6 = emoji.emojize(":bikini:")
e_7 = emoji.emojize(":woman_student_medium-dark_skin_tone:")

df = pd.DataFrame(
    [
        [f"{e_1}{e_2} me así se {e_3} ds {e_4}{e_5}{e_6} hello {e_7}"],
        [f"{e_1}{e_2} me así se {e_3} ds {e_4}{e_5}{e_6} hello"],
        [f"{e_1}{e_2} me así se {e_3} ds"],
        [f"{e_1}{e_2} me así"],
    ],
    columns=["Text"],
)

df['emoji_list'] = df["Text"].apply(lambda row: ''.join(c for c in row if c in emoji.UNICODE_EMOJI))

df["emoji_len"] = sum(df["emoji_list"].apply(lambda x: x.encode('utf-16be')) // 2)

df["emoji_list"]中,我在下面的每一行都有这些

0🤔🙈😌💕👭👙👩🏾🎓

一,🤔🙈😌💕👭👙

二,🤔🙈😌

三,🤔🙈

我目前的df['emoji_len']代码不起作用。出现的错误是“不支持+:'int'和'bytes'的操作数类型”。有人能帮我更正代码吗


Tags: 代码importdf列表asdslistutf
1条回答
网友
1楼 · 发布于 2024-05-18 12:34:51

一些错误。。。使用decode()并需要计算len()//2

byt = 'emoji_xxx'.encode('utf-16be')
df = pd.DataFrame(dict(emoji_list = [byt for n in range(3)]))

df["emoji_len"] = df["emoji_list"].apply(lambda x: len(x.decode('utf-16be')))//2
print(df)

                                         emoji_list  emoji_len
0  b'\x00e\x00m\x00o\x00j\x00i\x00_\x00x\x00x\x00x'         12
1  b'\x00e\x00m\x00o\x00j\x00i\x00_\x00x\x00x\x00x'         12
2  b'\x00e\x00m\x00o\x00j\x00i\x00_\x00x\x00x\x00x'         12

相关问题 更多 >

    热门问题