#!usr/bin/env python
# -*- coding:utf-8 -*-
"""
@author: dell
@file: after_lijie.py
@time: 2021/03/31
@desc:
"""
import pandas as pd
import numpy as np
import re
import xlsxwriter

def pachong_washing(filepath):
    df=pd.read_excel(filepath, converters={'产品编码':str})
    #df.drop(columns='Unnamed: 0', axis=1, inplace=True)
    for col in ['补充后型号','爬取名称']:
        df[col]=df[col].astype(str)

    # 爬取名称关键词提取
    comparing_df=pd.DataFrame()
    for i in df.index:
        df.loc[i,'爬取名称']=df.loc[i,'爬取名称'].upper()
        k=df.loc[i,'爬取名称']

        pre_num = re.search(r'([A-Za-z]{0,4})\W?\d+', k)  # pre_num为数字前的关键字
        if pre_num:
            pre_num = pre_num.group(1)
        if not pre_num:
            pre_num=''

        num = re.search(r'(\d+)', k)  # num为数字关键字
        if num:
            num = num.group(1)  # 如果连续数字超过1处，我们只提取第一处，这个可能有点问题但目前还不知道怎么办
        if not num:  # 如果没有数字，就比较英文单词
            alpha=re.findall(r'[A-Za-z]+', k)
            alpha=''.join(alpha)

        pos_num = re.findall(r'\d+([A-Za-z]+)?\W?([0-9]+)?\W?([A-Za-z]+)?\W?([0-9]+)?\W?([A-Za-z]+)?\W?([0-9]+)?\W?([A-Za-z]+)?',
                             k)  # pos_num为数字后的关键字
        if pos_num:
            pos_num = ''.join(pos_num[0])
            if '升级版' in k:
                pos_num += '升级版'
            if '专业版' in k:
                pos_num += '专业版'
            if '教育版' in k:
                pos_num += '教育版'
            if '+' in k:
                pos_num += '+'

        if not pos_num:
            pos_num=''

        comparing_df.loc[i, '爬取数据pre_num'] = pre_num
        if num:
            comparing_df.loc[i, '爬取数据num'] = num
        if not num:
            comparing_df.loc[i, '爬取数据alpha'] = alpha
        comparing_df.loc[i, '爬取数据pos_num'] = pos_num

    for i in df.index:
        df.loc[i, '补充后型号'] = df.loc[i, '补充后型号'].upper()
        k=df.loc[i, '补充后型号']

        pre_num = re.search(r'([A-Za-z]{0,4})\W?\d+', k)  # pre_num为数字前的关键字
        if pre_num:
            pre_num = pre_num.group(1)
        if not pre_num:
            pre_num = ''

        num = re.search(r'(\d+)', k)  # num为数字关键字
        if num:
            num = num.group(1)  # 如果连续数字超过1处，我们只提取第一处，这个可能有点问题但目前还不知道怎么办
        if not num:  # 如果没有数字，就比较英文单词
            alpha = re.findall(r'[A-Za-z]+', k)
            alpha = ''.join(alpha)

        pos_num = re.findall(
            r'\d+([A-Za-z]+)?\W?([0-9]+)?\W?([A-Za-z]+)?\W?([0-9]+)?\W?([A-Za-z]+)?\W?([0-9]+)?\W?([A-Za-z]+)?',
            k)  # pos_num为数字后的关键字
        if pos_num:
            pos_num = ''.join(pos_num[0])
            if '升级版' in k:
                pos_num += '升级版'
            if '专业版' in k:
                pos_num += '专业版'
            if '教育版' in k:
                pos_num += '教育版'
            if '+' in k:
                pos_num += '+'
        if not pos_num:
            pos_num=''

        comparing_df.loc[i, '补充型号pre_num'] = pre_num
        if num:
            comparing_df.loc[i, '补充型号num'] = num
        if not num:
            comparing_df.loc[i, '补充型号alpha'] = alpha
        comparing_df.loc[i, '补充型号pos_num'] = pos_num

    for i in df.index:
        if comparing_df.loc[i,'补充型号pre_num'] != '' and comparing_df.loc[i,'爬取数据pre_num'] != '':
            if comparing_df.loc[i,'补充型号pre_num'] != comparing_df.loc[i,'爬取数据pre_num']:
                for col in df.columns[15:21]:
                    df.loc[i,col] = '暂无数据'
                continue

        if comparing_df.loc[i,'补充型号num'] != comparing_df.loc[i,'爬取数据num']:  # 如果没有num，此处为nan, nan!=nan所以没问题
            if type(comparing_df.loc[i,'补充型号num']) != float:
                    for col in df.columns[15:21]:
                        df.loc[i, col] = '暂无数据'
                    continue
            else:
                if comparing_df.loc[i, '补充型号alpha'] not in comparing_df.loc[i, '爬取数据alpha']:
                    for col in df.columns[15:21]:
                        df.loc[i, col] = '暂无数据'
                    continue



        if comparing_df.loc[i,'补充型号pos_num'] != comparing_df.loc[i,'爬取数据pos_num']:
            for col in df.columns[15:21]:
                df.loc[i, col] = '暂无数据'
            continue

    df.to_excel('./爬取数据分析.xlsx')


if __name__ == '__main__':
    filepath = "E:\\ZDZC\\扫描仪参数确认(爬虫).xlsx"
    pachong_washing(filepath)