字符串比较

字符串比较

字符串相似度匹配工作中时常遇到需要去A表中搜索是否存在B字符串,或者是否存在近似的相关字符串,在数量较大的情况可以采用以下三种方法进行快速识别,灵活呈现结果:

方法一Levenshtein编辑距离方法,**指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。例如:例如‘大黄河’与‘黄河流域’比较,“大黄河”需要去掉“大”、再补充“流”“域”才能完全相同,故两者的距离为3。

Levenshtein.distance(str1, str2)

方法二:**difflib方法,**这个模块提供的类和方法用来进行差异化比较。他源于1980,s的“完形匹配算法”,并且进行了一系列的优化和改进。由于原始的完形匹配算法,在最坏情况下有n的平方次运算,在最好情况下,具有线性的效率

difflib.SequenceMatcher(None, str1, str2).quick_ratio()

方法三:切片比较方法。将字符串进行切片,然后逐一进行比较。例如‘我爱青藏高原’与‘青藏高原是一个美丽的地方’比较,先进行字符长度比较,再将长度最小的字符串进行切片处理,‘我爱青藏高原’可分切为‘我爱’/‘爱青’/‘青藏’/‘藏高’/‘高原’这5个组,将其逐一与后者进行比较,成功一次则+1,全部能匹配上则为100%。
假定已判断数据A长度小于数据B的长度:

for a in df.数据A:
	x=0
	y=2
	while x<(len(a)-1):
		temp=a[x:y]
		for d in df.数据B:
			if str(temp) in str(d):
				data = [a, temp, d, '1']
				df2 = pd.DataFrame([data],index=None)
				print(df2)
		x=x+1
		y=y+1
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值