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

Python统计Langchain Document空pageContent元素数量及删除方法

解决Langchain Document空pageContent的统计与过滤问题

统计空pageContent元素的数量

加载完文档后,直接遍历列表统计符合条件的元素即可,这里会把空字符串、仅含空白字符的情况都算做空内容:

docs = load_docs_from_jsonl("你的文件路径.jsonl")
empty_count = sum(1 for doc in docs if not doc.pageContent.strip())
print(f"空pageContent的元素数量:{empty_count}")

删除空pageContent的元素

有两种处理方式,按需选择:

方式一:加载后过滤

如果已经加载了所有文档,用列表推导式直接过滤掉空内容的元素:

filtered_docs = [doc for doc in docs if doc.pageContent.strip()]

方式二:加载时直接过滤(更高效)

修改原加载函数,在生成Document对象前就判断内容是否有效,避免无效元素占用内存:

import json
from langchain.schema import Document
from typing import Iterable

def load_docs_from_jsonl(file_path)->Iterable[Document]:
    array = []
    with open(file_path, 'r') as jsonl_file:
        for line in jsonl_file:
            data = json.loads(line)
            # 检查pageContent存在且去除空白后非空
            if data.get("pageContent") and data["pageContent"].strip():
                obj = Document(**data)
                array.append(obj)
    return array

进阶:加载时同时统计空元素数量

如果想一次完成加载、统计、过滤,可修改函数返回过滤后的文档和空元素数量:

import json
from langchain.schema import Document
from typing import Iterable, Tuple

def load_docs_from_jsonl(file_path)->Tuple[Iterable[Document], int]:
    array = []
    empty_count = 0
    with open(file_path, 'r') as jsonl_file:
        for line in jsonl_file:
            data = json.loads(line)
            page_content = data.get("pageContent", "")
            if page_content.strip():
                obj = Document(**data)
                array.append(obj)
            else:
                empty_count += 1
    return array, empty_count

# 使用示例
docs, empty_num = load_docs_from_jsonl("你的文件路径.jsonl")
print(f"过滤后剩余文档数:{len(docs)},空内容元素总数:{empty_num}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:10:37