总结表情符号长度
Summing Up Emoji Length
我有表情符号列表,想通过将每行列表中所有表情符号的长度相加来创建一个新变量,将每行中的列表编码为 '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
1
2
3
我当前的 df['emoji_len'] 代码无法正常工作。出现的错误是“+ 不支持的操作数类型:'int' 和 'bytes'”。谁能帮我更正我的代码?
一些错误...使用 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
我有表情符号列表,想通过将每行列表中所有表情符号的长度相加来创建一个新变量,将每行中的列表编码为 '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
1
2
3
我当前的 df['emoji_len'] 代码无法正常工作。出现的错误是“+ 不支持的操作数类型:'int' 和 'bytes'”。谁能帮我更正我的代码?
一些错误...使用 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