对xls文件操作,中文模糊匹配
python读取xls
安装xlrd包
#读取表格
book = xlrd.open_wprkbook('./tset.xls',formatting_info=True)
sheet = book.sheet_by_index(0)
#或者 sheet = book.sheets()[1]
#获取行数列数
n = sheet.nrows
r = sheet.ncols
#某个单元格
c = sheet.cell(row,col)
#某个单元格数据
text = c.value
#获取单元格背景颜色索引
xfx = sheet.cell_xf_index(row,col)
xf = sheet.xf_list[xfx]
bgx = xf.background.pattern_colour_index
#判断字符串是否在单元格中
if('yesmola' in text):
return 1
编辑xls文件
编辑文件的方法通过xlutils包 拷贝一个新的xls文件实现。
from xlutils.copy import copy
#先读取一个xls
book = xlrd.open_wprkbook('./tset.xls',formatting_info=True)
#再通过copy读取到的xls进行写入操作
book2 = copy(book)
write_sheet = book2.get_sheet(0)
#写入
write_sheet.write(row,col,'text')
#保存
book2.save('1.xls')
python 字符串有关操作
#ASCI码转换
x = 65 #大写A
y = 97 #小写a
z = char(x) #z = A
#字符替换
name = zhao
realname = name.replace('z','s') #realname = shao
#切片
str = '122#233#444'
le = len(str.split('#')) #le = 3
s1 = str.split('#')[0] #s1 = 122
#取倒数切片
s2 = str.split('#')[-1] #s2 = 444
#从第i位取
str2 = 'yesmola'
s3 = str2[2:] #s3 = 'smola'
字符串模糊匹配
jieba中文分词
原文 jieba分词和模糊匹配
jieba.lcut("紫菜蛋花汤")#精确模式,精确分词不冗余
['紫菜', '蛋花汤']
jieba.lcut("紫菜蛋花汤",cut_all=True)#全模式,所有可能的词组
['紫菜', '蛋花', '蛋花汤', '花汤']
jieba.lcut_for_search("紫菜蛋花汤")#精确模式的基础上对长文本进一步分词
['紫菜', '蛋花', '花汤', '蛋花汤']
jieba.lcut("丰化芋艿头")
['丰化', '芋艿', '头']
jieba.lcut("丰化芋艿头",cut_all=True)
['丰', '化', '芋艿', '头']
jieba.lcut_for_search("丰化芋艿头")
['丰化', '芋艿', '头']
#lcut分词过于简单,忽略了类似'蛋花汤'中的'蛋花'信息,cut_all又过于细,反而不利于后续的相似度计算
#个人感觉lcut_for_search最合适
fuzzywuzzy
fuzz.ratio("番茄炒蛋","鸡蛋拌番茄")#单纯匹配文本的编辑距离,考虑总字符数
44
fuzz.partial_ratio("番茄炒蛋","鸡蛋拌番茄")#单纯匹配文本的编辑距离,考虑最短文本的字符数
50
fuzz.token_sort_ratio("番茄炒蛋","鸡蛋拌番茄")#忽略分词顺序的相似度,需要空格间隔分词才有效
44
fuzz.token_set_ratio("番茄炒蛋","鸡蛋拌番茄")#忽略分词重复的相似度,需要空格间隔分词才有效
44
fuzz.partial_ratio("番茄 炒 蛋","鸡蛋 拌 番茄")
33
fuzz.token_sort_ratio("番茄 炒 蛋","鸡蛋 拌 番茄")#加空格分词后显著提高相似性
77
fuzz.token_set_ratio("番茄 炒 蛋","鸡蛋 拌 番茄")#加空格分词后显著提高相似性
77
fuzz.token_set_ratio("番茄 炒 蛋","鸡蛋 蛋 拌 番茄")#分词时用全匹配的方式似乎可以提高相似性
80
fuzz.token_sort_ratio("番茄 炒 蛋","鸡蛋 蛋 拌 番茄")
67
#综合表现来说,中文分词后用fuzzywuzzy.token_set_ratio最合适