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

