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

从Blob Storage读取CSV至Pandas DataFrame:编码错误排查及分页行忽略方案咨询

解决Blob Storage CSV读取的编码错误与分页行过滤问题

看来你碰到了两个典型的文件读取问题:编码不匹配导致的解码报错,以及需要跳过特定格式的分页行。结合你的场景,我给你整理了两种实用的解决方案:

一、先搞定编码错误

你遇到的'utf-8' codec can't decode byte 0xc3...错误,说明文件并非UTF-8编码,大概率是西欧系编码(比如latin-1或cp1252),这类编码常用于包含特殊字符的旧文件。

方案1:指定兼容编码读取

优先尝试用latin-1编码读取,它能兼容所有字节值,不会抛出解码错误,适合处理带有未知特殊字符的文件:

import pandas as pd
from io import StringIO

blob_client_instance = blobService.get_blob_client("testflorencia", "TakeUpStores.csv", snapshot=None)
downloaded_blob = blob_client_instance.download_blob()
# 指定latin-1编码读取文本,避免解码失败
blob = downloaded_blob.content_as_text(encoding='latin-1')

如果latin-1显示的字符仍有异常,可以换成cp1252编码——这是Windows系统常用的西欧编码,对特殊字符的支持更精准。

二、过滤分页行

你提到每20行就有一条格式类似= 37.364.304;;;;的分页行,这里有两种灵活的过滤方式:

方法A:用pandas自带参数快速跳过

如果所有分页行都以=开头,直接在read_csv里设置comment='='即可,pandas会自动忽略所有以=开头的行,非常简洁:

# 接上面的代码
df = pd.read_csv(StringIO(blob), comment='=')
df

方法B:手动过滤行(适配复杂格式)

如果分页行的格式有变化,或者comment参数会误过滤其他行,你可以先拆分文本逐行判断,过滤掉符合分页特征的行后再传给pandas:

# 接上面读取blob的代码
# 按行拆分文本
lines = blob.split('\n')
# 过滤掉以=开头且包含;;;;的行(可根据实际格式调整判断条件)
filtered_lines = [line for line in lines if not (line.strip().startswith('=') and ';;;;' in line)]
# 重新拼接成可读取的文本
filtered_blob = '\n'.join(filtered_lines)
# 读取为DataFrame
df = pd.read_csv(StringIO(filtered_blob))
df

综合完整代码

把编码处理和分页行过滤结合起来,最终可用的代码示例:

import pandas as pd
from io import StringIO

# 获取Blob客户端并下载内容
blob_client_instance = blobService.get_blob_client("testflorencia", "TakeUpStores.csv", snapshot=None)
downloaded_blob = blob_client_instance.download_blob()

# 用latin-1编码读取文本,避免解码错误
blob_text = downloaded_blob.content_as_text(encoding='latin-1')

# 过滤分页行与空行
filtered_lines = []
for line in blob_text.split('\n'):
    stripped_line = line.strip()
    # 跳过空行和符合分页格式的行
    if not stripped_line or (stripped_line.startswith('=') and ';;;;' in stripped_line):
        continue
    filtered_lines.append(line)

# 读取为DataFrame
df = pd.read_csv(StringIO('\n'.join(filtered_lines)))
df

这样应该能同时解决编码错误和分页行的问题。如果还有特殊字符显示异常,可以调整编码参数(比如换成cp1252),或者根据分页行的实际格式微调过滤条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 18:42:37