如何在Pandas中清理表情符号、@标签及URL?求助数据清洗异常
Pandas文本数据清洗问题解决
1. 移除表情符号
你之前的代码出错是因为正则表达式写法错误,[시x00-Ix7F]是无效的匹配规则,且逻辑方向不对。要移除表情符号,可按需求选两种方式:
- 保留基本ASCII字符(移除所有非ASCII的表情/特殊字符):
df['message'] = df['message'].str.replace(r'[^\x00-\x7F]+', '', regex=True)
- 精准匹配Unicode表情范围(只移除表情,保留其他非ASCII文本):
# 覆盖常见表情符号的Unicode范围 df['message'] = df['message'].str.replace(r'[\U0001F600-\U0001F64F\U0001F300-\U0001F5FF\U0001F680-\U0001F6FF\U0001F1E0-\U0001F1FF]+', '', regex=True)
2. 移除@格式标签
直接匹配@开头的连续非空白字符,替换为空即可:
df['message'] = df['message'].str.replace(r'@\S+', '', regex=True)
如果@标签包含空格(比如@张三 你好),可调整正则为r'@.*?(?=\s|$)',匹配到下一个空格或文本结尾。
3. 移除URL
匹配HTTP/HTTPS开头的链接,替换为空:
df['message'] = df['message'].str.replace(r'https?://\S+', '', regex=True)
若要覆盖更多链接格式(比如不带协议的www.xxx.com),可用更全面的正则:
df['message'] = df['message'].str.replace(r'(https?://|www\.)\S+', '', regex=True)
内容的提问来源于stack exchange,提问作者Micheal
相关产品推荐
相关产品推荐

