python查找excel中内容_Python_Example_ 读取excel数据 进行匹配识别

#coding=utf-8#---------------------------------

'''# Author : chu ge

# Function:

#'''

#---------------------------------

'''# ------------------------------------------

# 导入模块

# 1.系统库

# 2.第三方库

# 3.相关定义库

# ------------------------------------------'''

#1.系统库

importsysimportosimportre#2.第三方库#读取 Excel 模块

importxlrdimportxlwtimportlogging'''# ------------------------------------------

# 导入:同级不同文件夹

# 先文件夹__init__注释,其次引用name.py

# 最后 使用具体 类class 或者 函数function 名称

# ------------------------------------------'''

importTest_Log'''# ------------------------------------------

# 导入:同级同文件夹

# 先引用name.py

# 后 使用具体 类class 或者 函数function 名称

# ------------------------------------------'''

importTesting_Read_Path#'''# ============================================================================

# Class : 类

# Explain : 输入参数

# : 输出参数

# ============================================================================'''

classClass_Module_Read(object):def __init__(self):print()def Methods_Excel_Data(self, file_path, colnameindex=0, by_name=u'Sheet1'): #修改自己路径

#print('Function_Excel_Table_Byname')

#---------------------------------------------------------------------------------------

self.File = file_path #路径名称变换

#路径

#print("路径",self.File)

#---------------------------------------------------------------------------------------

local_list_line =[]#Methods_Excel_Data

try:#--------------------------------------------------------------------------------------

local_var_temp_data = xlrd.open_workbook(self.File) #打开电子文档 目的:响应删除函数

## 这里可以拓展,使用一个Excel 利用不同表格,可以减少外部表格的数量,与上述打开表格方式 是不同的

local_var_temp_table = local_var_temp_data.sheet_by_name(by_name) #获得表格 Excel中不同表格

## Contains the data for one worksheet

local_var_total_rows = local_var_temp_table.nrows #属性 拿到总共行数

#print('total_rows: < %d >' % local_var_total_rows) # display

## Returns a slice of the values of the cells in the given line

local_var_column_names =local_var_temp_table.row_values(colnameindex, 0,6) #某一列数据 ['', '', '', ''] 默认从0行开始

#print('line num: < %s > names: < % s >'% (len(local_var_column_names),local_var_column_names))

for temp_num in range(1, local_var_total_rows): #也就是从Excel第二行开始,第一行表头不算

local_var_row = local_var_temp_table.row_values(temp_num) #返回单元格中切片

#print('rows_num: < %s > line_num: < %s > each_element' % (temp_num ,len(local_var_row)),local_var_row ) # 每row 就是列表

#每行分片成列表, 列表转变成字典, 字典转变成列表

local_dictionary_app = dict(zip(local_var_column_names, local_var_row)) #列表变字典

#print('local_dictionary_app: ',local_dictionary_app)

local_list_line.append(local_dictionary_app) #字典转变成列表

## 内部的字典变成了元素

#print('local_list_line: ',local_list_line) #打印列表元素

returnlocal_list_lineexceptException:print("捕获异常:\n位置:<%s>\n目录:<%s>" % ("Methods_Excel_Data", os.getcwd()))defMethods_Excel_Data_Display(self, file_path):

local_list_line=self.Methods_Excel_Data(file_path)#遍历列表中的元素 显示成表格模式

for line inlocal_list_line:print('行号编码:< %s > %s' %(local_list_line.index(line), line))#pprint.pprint(line) # 规则打印数据

#返回列表 并且列表的元素是字典

#'''# ============================================================================

# Class : 类

# Explain : 输入参数 表格数据

# : 输出参数 分表格

# ============================================================================'''

classClass_Module_Tlabe(object):def __init__(self):

File_Path= Testing_Read_Path.Class_File_Read() #路径对象 path

self.local_var_path_standard =File_Path.Methods_File_Operation_Standard()

self.local_var_path_actual=File_Path.Methods_File_Operation_Actual()

self.Log_Display=Test_Log.Test_Save_log.Class_Log_Display()

self.Log_Display.Methods_BasicConfig()defMethods_Table_Standard(self):#Methods_Table_Standard

try:

File_Read= Class_Module_Read() #Excel data 对象

Table_Standard =File_Read.Methods_Excel_Data(self.local_var_path_standard)returnTable_StandardexceptException:print("捕获异常:\n位置:<%s>\n目录:<%s>" % ("Methods_Table_Standard", os.getcwd()))defMethods_Table_Actual(self):#Methods_Table_Actual

try:

File_Read= Class_Module_Read() #Excel data 对象

Table_Actual =File_Read.Methods_Excel_Data(self.local_var_path_actual)returnTable_ActualexceptException:print("捕获异常:\n位置:<%s>\n目录:<%s>" % ("Methods_Table_Actual", os.getcwd()))# #搜索actual 中循环搜索的词条,逐个与全部的标准库进行对比

defMethods_Search_Actual_To_Standard(self):

Table_Actual=self.Methods_Table_Actual()

local_error_line_list=[]

Feature=self.Methods_Feature_Select()#Actual_To_Standard

try:

local_var_order_count= 0 #初始化计数

print("Total Actual Line : < %d >" %len(Table_Actual))for Var_A_Element inTable_Actual:

local_var_order_count+= 1

#这里是对比的源头

#添加规则正则表达,首字母

try:

Is_Capital=self.Methods_Capital_Word(Var_A_Element[1])if Is_Capital ==True:

A1= self.Methods_Search_Standard(1, Var_A_Element[1]) #第1列 备注 第0列开始

else:

A1=NoneexceptException:print("123")

A2= self.Methods_Search_Standard(2, Var_A_Element[2]) #第2列

#功能选择处

if Feature == "1":

A3= "1"

else:

A3= self.Methods_Search_Standard(3, Var_A_Element[3]) #第3列

print('*' * 20)print('line Number : <%d>' % (local_var_order_count + 1))

logging.info('\nline Number : [%d]\n%s' % ((local_var_order_count + 1),"one sql end"))if ((A1 == "1") and (A2 == "1") and(A3 == "1")) !=0:print('本词条测试结束')print("--" * 20)else:print('词条有错误!!! 请查找原因 !!!')print("--" * 20)

local_error_line_list.append(local_var_order_count)#test message total

print("Test Message Total")for var_line inlocal_error_line_list:print("Error line: %s" % (var_line + 1)) #对应Excel

logging.info("Error line: %s" % (var_line + 1))print("Total Num : <%s>" %len(local_error_line_list))

logging.info("Total Num : <%s>" %len(local_error_line_list))exceptException:print("捕获异常:\n位置:<%s>\n目录:<%s>" % ("Actual_To_Standard", os.getcwd()))defMethods_Search_Standard(self, line, entry):

Table_Standard=self.Methods_Table_Standard()

self.loacl_var_line=line

self.local_var_entry=entry

Local_var_count= 1

#Search_Actual_To_Standard

try:#单个思路:获取到对值进行匹配,此值作为对比的标点,标准库作为标靶

#搜索匹配功能,遍历每行,对应元素进行匹配,这是关键

#最后返回提示量

for Var_A_Element inTable_Standard:#有词条且词条不为空

if (self.local_var_entry == Var_A_Element[self.loacl_var_line]) !=0:

Local_Test_Flag= "1"

returnLocal_Test_Flagelse:

Local_Test_Flag= "0"Local_var_count+= 1

#调试时,打开打印

print("Error name:<%s>" %self.local_var_entry)

logging.info("\nError column: <%d>\n词条名称 : <%s>" %(self.loacl_var_line,self.local_var_entry) )exceptException:print("捕获异常:\n位置:<%s>\n目录:<%s>" % ("Search_Actual_To_Standard", os.getcwd()))#功能选择函数

defMethods_Feature_Select(self):#1.feature 1和2列对比(默认)

#2.feature 1、2和3列对比

print("Feature Select:\n[%s]\n[%s]"%("1.feature 1和2列对比(默认)","2.feature 1、2和3列对比"))#Feature_Name = input(">>: ")

Feature_Name = "1" #调试固定

if Feature_Name >"3":

Feature_Name= "1"

returnFeature_Name#首字母大写特地检查

defMethods_Capital_Word(self,column1):

result_value= re.match(r"[A-Z]",column1)ifresult_value:

result=True#result = result2.istitle()

else:

result=False#print("首字母大写特地检查:",result)

returnresult#'''# ============================================================================

# Function: Function_Excel_Data 函数

# Explain : 输入参数 对象 列表的字典

# : 输出参数 被调用

# ============================================================================'''

defFunction_Excel_Data():#Function_Excel_Data

try:

File_Path= Testing_Read_Path.Class_File_Read() #路径对象 path

local_var_path_standard =File_Path.Methods_File_Operation_Standard()

local_var_path_actual=File_Path.Methods_File_Operation_Actual()# File_Read = Class_Module_Read() #Excel data 对象

#Table_Standard = File_Read.Methods_Excel_Data(local_var_path_standard)

#Table_Actual = File_Read.Methods_Excel_Data(local_var_path_actual)

File_Read.Methods_Excel_Data_Display(local_var_path_standard)

File_Read.Methods_Excel_Data_Display(local_var_path_actual)exceptException:print("捕获异常:\n目录:<%s>\n位置:<%s>" % ("Function_Excel_Data", os.getcwd()))#

#============================================================================

'''# ============================================================================

# 测试专用

# ============================================================================'''

if __name__ == "__main__":print('测试开始')#============================

Table_data =Class_Module_Tlabe()

Table_data.Methods_Search_Actual_To_Standard()print('测试完成')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值