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

Python如何移除含换行字符串内指定文本行与空行提取目标内容

爬虫字符串清理残留空行问题

初始版本代码(未添加replace("Plugin Goo")逻辑)

if "Inhalt" in i:
    clean_1 = i[128:138]
    clean_2 = clean_1.replace(">", "")
    clean_2 = clean_2.replace("</", "")
    clean_2 = clean_2.replace('\n', " ")
    print(clean_2)

初始运行输出

Plugin Goo
0,330 l

预期目标输出:

0,330 l

第一次调整尝试

新增替换"Plugin Goo"的逻辑,代码如下:

if "Inhalt" in i:
    clean_1 = i[128:138]
    clean_2 = clean_1.replace(">", "")
    clean_2 = clean_2.replace("</", "")
    clean_2 = clean_2.replace('\n', " ")
    clean_2 = clean_2.replace('Plugin Goo', "").strip()
    print(len(clean_2))
    print(clean_2)

调整后输出

0
7

0,330 l

存在的问题:"Plugin Goo"文本已被移除,但原文本位置残留长度为0的空行,无法得到干净的数值结果。

可行解决方法

问题出在两个地方:一是先把换行符替换为空格,删除指定文本后,中间残留的空白无法被首尾的strip()清除,拆分输出时就会出现空行;二是用固定索引切片取内容的写法容错性极低,页面标签稍微变动就会取错内容。
推荐两种稳定实现方案:

  • 方案1:按行拆分过滤空行
    不需要提前替换换行符,拆分后直接过滤掉空内容即可
if "Inhalt" in i:
    clean_1 = i[128:138]
    clean_2 = clean_1.replace(">", "").replace("</", "")
    # 按换行拆分,逐行去除首尾空白,过滤掉所有空行
    valid_lines = [line.strip() for line in clean_2.splitlines() if line.strip()]
    # 排除掉Plugin Goo所在行,取目标数值行
    target = [line for line in valid_lines if line != "Plugin Goo"][0]
    print(target)
  • 方案2:正则直接匹配目标数值
    完全跳过无关文本清理步骤,直接匹配符合格式的容积值,爬虫场景下稳定性更高
import re
if "Inhalt" in i:
    # 匹配 数字,数字 加单位l的格式
    res = re.search(r"\d+,\d+\s*l", i)
    if res:
        print(res.group())

两种方案最终都能直接输出无空行的目标结果0,330 l。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:03:36