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

Python清洗HTML数据时替换\nvote失败的问题求助

问题分析与解决建议

你的问题核心出在函数的执行逻辑顺序上:在keyname == 'votes'的分支里,你写的第一个return语句会直接终止函数运行,后面的if判断代码根本没有机会执行!不管是判断'\nvote' in text还是text == '1\nvote',这些代码都永远不会被触发,自然没法处理单数形式的1\nvote。

修正方案

方案1:调整执行顺序,分步替换后统一返回

把提前的return去掉,先完成所有替换操作,最后再返回处理后的结果:

def clean_scraped_data(text, keyname=None):
    if keyname == 'votes':
        # 先处理复数形式,再处理单数形式
        cleaned_text = text.replace('\nvotes', '')
        cleaned_text = cleaned_text.replace('\nvote', '')
        return cleaned_text
    if keyname == 'summary':
        return text.replace('\nvotes', '')
    return text

方案2:用正则表达式一次性匹配单复数

如果想更简洁高效,可以用正则匹配\nvote(s)?(同时匹配\nvote和\nvotes),一次性完成替换:

import re

def clean_scraped_data(text, keyname=None):
    if keyname == 'votes':
        return re.sub(r'\nvote(s)?', '', text)
    if keyname == 'summary':
        return text.replace('\nvotes', '')
    return text

两种方案都能正确把3\nvotes处理成3,把1\nvote处理成1,解决你当前遇到的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 13:07:32