ParserError: Error tokenizing data

处理中文逗号CSV文件

csv文件默认的是以逗号为分隔符,但是经常混入中文逗号,这样在读取csv进行数据处理时,一定记得加上一个参数delimiter:

pd.read_csv('D:/datasets/test.csv', sep=',')
这里的逗号是中文逗号即可
### 解决方案分析 在处理 `ParserError: Error tokenizing data. C error: Expected 17 fields in line 1787, saw 19` 错误时,问题通常出现在数据文件的格式或内容上。以下是可能的原因及解决方案: #### 1. 数据文件中存在不一致的分隔符 如果 CSV 文件中的某些行包含额外的逗号或其他分隔符,会导致解析器期望的字段数与实际字段数不匹配。可以通过以下方法解决: - 使用 `error_bad_lines=False` 参数跳过有问题的行[^2]。 - 示例代码如下: ```python import pandas as pd df = pd.read_csv('data.csv', error_bad_lines=False, warn_bad_lines=True) ``` #### 2. 数据文件中存在嵌套引号或转义字符 某些情况下,CSV 文件中的文本字段可能包含未正确转义的引号或逗号,导致解析错误。可以尝试以下方法: - 使用 `quotechar` 参数指定引用字符[^3]。 - 示例代码如下: ```python df = pd.read_csv('data.csv', quotechar='"', escapechar='\\') ``` #### 3. 数据文件编码问题 如果文件编码与 Pandas 默认编码不匹配,也可能引发解析错误。可以尝试以下方法: - 明确指定文件编码为 `utf-8-sig` 或其他适用的编码[^3]。 - 示例代码如下: ```python df = pd.read_csv('data.csv', encoding='utf-8-sig') ``` #### 4. 手动预处理数据文件 如果上述方法仍无法解决问题,可以手动预处理数据文件以确保一致性。例如: - 使用 Python 的内置文件操作读取并清理数据。 - 示例代码如下: ```python data = [] with open('data.csv', 'r', encoding='utf-8-sig') as f: for line in f: # 去除多余的空格和换行符 cleaned_line = line.strip().split(',') data.append(cleaned_line) # 将清理后的数据转换为 DataFrame df = pd.DataFrame(data[1:], columns=data[0]) ``` #### 5. 调整 Pandas 的解析参数 Pandas 提供了多个参数用于调整 CSV 文件的解析行为。例如: - 使用 `skiprows` 参数跳过异常行[^1]。 - 使用 `on_bad_lines` 参数(适用于 Pandas 1.3+)处理异常行[^2]。 - 示例代码如下: ```python df = pd.read_csv('data.csv', on_bad_lines='skip') ``` --- ### 总结 通过以上方法可以有效解决 `ParserError: Error tokenizing data. C error: Expected 17 fields in line 1787, saw 19` 错误。具体选择哪种方法取决于数据文件的具体问题和业务需求。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值