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最合适
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值