背景说明:
日常有时会遇到一些合并单元格及带图片的excel文件,数据格式非常不规范,需要从中提取有用信息
解决思路:
- 类似这种数据,有它本身固有的规律,如一次只有一个条码
- 找出我们需要的字段名,获取该字段的行、列坐标,然后偏移取值
- 其中使用了字典和列表的嵌套及解绑
具体代码:
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(</