从带合并单元格的excel读取信息

背景说明:

日常有时会遇到一些合并单元格及带图片的excel文件,数据格式非常不规范,需要从中提取有用信息
pandas打开如图所示

解决思路:

  • 类似这种数据,有它本身固有的规律,如一次只有一个条码
  • 找出我们需要的字段名,获取该字段的行、列坐标,然后偏移取值
  • 其中使用了字典和列表的嵌套及解绑

具体代码:

import os
import pandas as pd


class extract_goods_info(object):
    def __init__(self, path):
        self.path = path  # 初始化文件读取路径

    def read_excel(self):
        df = pd.read_excel(self.path)
        df.dropna(how='all', axis=0, inplace=True)  # 删除全为NUll的行和列
        df.dropna(how='all', axis=1, inplace=True)
        return df

    # 获取元素所在的行、列号
    def get_index_columns(self):
        df = self.read_excel()
        sku_index = []
        sku_columns = []
        for m, index in enumerate(df.index):
            loc_data = df.loc[index].values  # 每行的数据
            if '默认条形码' in loc_data:
                sku_index.append({
   '默认条形码': m})
            if '包装信息' in loc_data:
                sku_index.append({
   '包装信息': m})
            if '项目编号' in loc_data:
                sku_index.append({
   '项目编号': m})
            if '商品名称' in loc_data:
                sku_index.append({
   '商品名称': m})
            if '商品型号' in loc_data:
                sku_index.append({
   '商品型号': m})
            if '供应商' in loc_data:
                sku_index.append({
   '供应商': m})
            if '保质期' in loc_data:
                sku_index.append
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值