如何移除DataFrame中阿拉伯语文本内的表情符号
移除DataFrame阿拉伯语文本中的表情符号方案
核心思路
通过正则表达式精准过滤表情符号,同时完整保留阿拉伯语字符、空格及常用标点,避免误删非英文内容。
实现步骤
- 导入依赖库
import pandas as pd import re
- 创建测试DataFrame
data = {'text': ['يااا واجعوط هذا راه باغي يبدع فالسانكيام😭🤦♀️', 'أهلاً بالعالم!😀', 'كيف حالك؟🤔😎']} df = pd.DataFrame(data)
- 定义清理函数(两种可选方案)
方案一:白名单模式(推荐)
只保留阿拉伯语字符、空格及常用标点,移除所有其他字符(含表情):
def remove_emojis(text): # 匹配阿拉伯语Unicode范围(\u0600-\u06FF)、空格、常用标点 pattern = re.compile(r'[^\u0600-\u06FF\s!؟.]') return pattern.sub('', text)
方案二:黑名单模式
直接匹配所有表情符号的Unicode范围并移除:
def remove_emojis(text): emoji_pattern = re.compile("[" u"\U0001F600-\U0001F64F" # 表情符号 u"\U0001F300-\U0001F5FF" # 符号和象形文字 u"\U0001F680-\U0001F6FF" # 交通和地图符号 u"\U0001F1E0-\U0001F1FF" # 国旗 u"\U00002500-\U00002BEF" # 杂项符号 u"\U00002702-\U000027B0" u"\U000024C2-\U0001F251" u"\U0001f926-\U0001f937" u"\U00010000-\U0010ffff" u"\u2640-\u2642" u"\u2600-\u2B55" u"\u200d" u"\u23cf" u"\u23e9" u"\u231a" u"\ufe0f" u"\u3030" "]+", flags=re.UNICODE) return emoji_pattern.sub('', text)
- 应用函数到DataFrame
df['cleaned_text'] = df['text'].apply(remove_emojis)
- 查看结果
print(df)
执行后输出的cleaned_text列即为移除表情后的阿拉伯语文本,示例输入对应的输出为:يااا واجعوط هذا راه باغي يبدع فالسانكيام
内容的提问来源于stack exchange,提问作者tous
相关产品推荐
相关产品推荐

