如何处理 langchain 顶部有描述且缺少列的 csv?

问题描述 投票:0回答:1

我有以下 csv,我想用 langchain 加载:

enter image description here

我做了以下事情:

loader = CSVLoader(file_path='shopids.csv', encoding="utf-8",csv_args={'delimiter': ','} )

但是,当我查看输出时,它错过了“注释”列,并且我不确定当它具有如上所述的标题时如何解析此 csv。

[文档(page_content='\ufeff: : 编号:123456 父组织:12',元数据={'source':'shopids.csv','row':0}),文档(page_content='\ufeff: : ID:莎莉丝衣服 父组织:H&M', 元数据={'source': 'shopids.csv', 'row': 1}), Document(page_content='\ufeff: : ID: 父组织: ', 元数据={'source': 'shopids.csv', 'row': 2}), Document(page_content='\ufeff: : ID: 父组织: ', 元数据={'source': 'shopids.csv', 'row': 3}), Document(page_content='\ufeff: DocID : 国家 身份证号码: 身份证号码 父组织:父组织', 元数据={'source': 'shopids.csv', 'row': 4}), Document(page_content='\ufeff: Sads : 英国 编号:34554 父组织: julies',metadata={'source': 'shopids.csv', 'row': 5}), Document(page_content='\ufeff: b. shp 保险 : 西班牙 编号:4567 父组织:aa',元数据={'source':'shopids.csv','row':6}),文档(page_content ='\ ufeff:sads : 德国 编号:34554 父组织: julies',metadata={'source': 'shopids.csv', 'row': 7}), Document(page_content='\ufeff: b. shp 保险 : 美国 编号:4567 父组织:aa',元数据={'source':'shopids.csv','row':8}),文档(page_content='\ufeff:sads : 美国 编号:34554 父组织: julies',metadata={'source': 'shopids.csv', 'row': 9}), Document(page_content='\ufeff: b. shp 保险 : 美国 编号:924923044 父组织:annies',元数据={'source':'shopids.csv','row':10}),文档(page_content='\ufeff:sads : 美国 编号:e645605469 父组织: hulberts',metadata={'source': 'shopids.csv', 'row': 11}), Document(page_content='\ufeff: b. shp 保险 : 美国 编号:4567 父组织:aa',元数据={'source':'shopids.csv','row':12})]

我如何更改代码,以便可以包含注释列并处理前 3 行的内容? 当我将其编码为 utf-8 时,不确定 ufeff 是什么。

python csv parsing langchain
1个回答
0
投票

看起来至少存在一些问题,本质上是非标准标题和额外的描述行。您看到的 BOM (\uFEFF) 是字节顺序标记,通常用于表示 UTF-8 文本的编码。如果处理正确,应该不会造成问题。首先,我认为您需要手动指定标题行以便忽略它们,并使用

pandas
polars
跳过初始描述行来确定正确的标题行开始的位置。例如,使用
pandas
skiprows
参数来指定从哪里开始阅读。如果编码设置为
utf-8-sig
:

,则可以自动处理 BOM
import pandas as pd
from langchain.document_loaders import DataFrameLoader

df = pd.read_csv('shopids.csv', skiprows=3, encoding='utf-8-sig')

loader = DataFrameLoader(df)

documents = loader.load()

# Check the output
for doc in documents:
    print(doc.page_content
© www.soinside.com 2019 - 2024. All rights reserved.