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
相关产品推荐
相关产品推荐

