You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas DataFrame中OriginalTweet列文本清洗未正常生效求助

问题排查思路
  • 正则覆盖范围不全:你当前写的正则仅能匹配http:///https://开头的标准URL,完全没覆盖三类需要清理的目标内容:一是@用户名格式的提及符号,二是//xxx格式的协议相对路径,三是链接之外的其他特殊符号;另外正则中写的&是HTML转义后的和号,原始文本里如果是直接的&字符无法被匹配到。
  • 数据类型异常未处理:如果OriginalTweet列存在非字符串值(比如NaN缺失值、数值类型条目),re.sub执行时不会抛出编译/运行错误,但会直接返回原始值,最终表现为清洗不生效。
  • 未做单例验证:全量调用apply前没有拿已知带脏内容的单条文本测试函数效果,无法快速定位是正则匹配失效还是数据本身的问题。
可落地解决方案

完整清洗逻辑需要覆盖你提到的所有无关内容,代码如下,可直接复用:

import re
# 如果存在HTML转义字符需要额外导入html模块
# import html

def clean_tweet_content(text):
    # 先兜底处理非字符串类型的异常值
    if not isinstance(text, str):
        return ""
    # 如有HTML转义字符先还原,避免转义残留
    # text = html.unescape(text)
    # 移除@提及
    text = re.sub(r'@\w+', '', text)
    # 移除所有链接:覆盖http/https开头、//开头的路径类内容
    text = re.sub(r'https?://\S+|//\S+', '', text)
    # 移除剩余无关特殊符号,仅保留中英文、数字、常用标点
    text = re.sub(r'[^\u4e00-\u9fa5a-zA-Z0-9\s,.!?%-]', '', text)
    # 合并清洗后产生的多余空格,去掉首尾空白
    text = re.sub(r'\s+', ' ', text).strip()
    return text

# 对目标列应用清洗函数
train_data['OriginalTweet'] = train_data['OriginalTweet'].apply(clean_tweet_content)

代码里注释掉的HTML转义处理逻辑,如果你查看原始数据发现存在& "这类转义片段,把注释去掉即可生效。

内容的提问来源于stack exchange,提问作者Encipher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 01:15:29