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

如何移除DataFrame中含版权符号©的句子?

代码问题分析及修复

核心问题1:遍历列表时直接修改列表,导致漏处理元素

你在遍历tokens列表的同时调用tokens.remove(sentence),这会打乱列表的遍历顺序。比如列表里有连续两个带©的句子,第一个被移除后,第二个会被跳过,根本不会被检查到,自然就留了下来。

核心问题2:DataFrame赋值逻辑错误

你用df['summaries'].loc[(df['summaries'] == i)] = final来更新值,一旦有重复的article_texts内容,会错误地把所有匹配行都改成同一个final;而且如果summaries列初始值和article_texts不一样,这个条件根本匹配不到,等于白改。

次要问题:异常处理太宽泛

except:会捕获所有异常,包括索引错误、空值错误等,你根本不知道代码哪里出了问题,调试起来完全抓瞎。


修复后的代码

用列表推导式过滤带©的句子,再用apply处理每一行,逻辑清晰还不会漏处理:

def remove_copyright_sentences(text):
    # 拆分句子(如果需要更准确的拆分可以用nltk的sent_tokenize,这里先按你的方式来)
    sentences = text.split(".")
    # 过滤掉含©的句子,同时去掉空字符串(避免拆分后出现空元素)
    filtered_sentences = [s.strip() for s in sentences if s.strip() and "©" not in s]
    # 重新拼接成段落
    return ". ".join(filtered_sentences)

# 对article_texts列处理后赋值给summaries列
df['summaries'] = df['article_texts'].apply(remove_copyright_sentences)

说明

  • 列表推导式是一次性生成过滤后的列表,不会出现遍历修改原列表的问题,所有带©的句子都会被检查到并过滤。
  • apply方法直接对每一行的文本处理,准确对应每一行的赋值,不会出现匹配错误。
  • 去掉了宽泛的异常处理,真出问题能直接看到报错信息,方便调试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:30:11