该篇文章总结了毕设背景下系统网站使用的相关知识技术内容。
字符串模糊匹配是大致(而不是精确地)查找与给定模糊匹配的字符串的过程,也被称为近似字符串匹配。
python中通过比较短文本相似性来实现字符串模糊匹配的方法有Levenshtein、difflib和fuzzywuzzy。
Levenshtein(第三方插件):需要输入为字符串,匹配时是整体匹配,数组匹配时需要用join把数组元素连接为字符串。
difflib(Python自带):不一定为字符串,数组也可以匹配,但数组匹配时只有单个元素完全匹配才计入相似。
fuzzywuzzy(第三方插件):Fuzzy(模糊)字符串匹配是作为一个简单易用的包使用Levenshtein Distance来计算中序列之间的差异。使用Levenshtein Distance计算两个字符串之间的接近程度,也称为编辑距离,其基本上是基于将一个字符串转换为另一个字符串的精确匹配所需要的基本操作的计数。
下面是上述三种方法的大致用法示例,更加多元的具体用法可继续查询学习。
# 运用代码 import Levenshtein import difflib from fuzzywuzzy import fuzz s1 = "你们公司在哪里" s2 = "你家的公司地址在哪里" print(Levenshtein.distance(s1, s2)) # 0~∞ print(Levenshtein.ratio(s1, s2)) # 0~1 print(difflib.SequenceMatcher(None, s1, s2).ratio()) # 0~1 print(fuzz.ratio(s1, s2)) # 0~100 # 输出结果 0.7058823529411764 0.7058823529411765 71
在python中split()函数作用为根据某个字符,对字符串进行分割,然后以列表形式进行输出。(split译为分裂) 1、split()默认分割:默认是根据空格字符对字符串进行分割。 2、split(’\n’)单分割:根据所写的单字符对字符串进行分割。 3、split(’ |!|?|.’, a)多分割:需要用到re模块,代码示例如下:
import re ans_list = re.split(r'[,#\n]', str1)
4、split(’ ', 2):只分割前2个空格,生成1个列表。若字符串内有3个或更多空格,分割完成后若还存在空格,则不会进行分割,只会放在一个字符串里面。代码示例如下:
a = "E 239113 hello world" c = a.split(" ", 2) print(c) # 输出结果:['E', '239113', 'hello world']
# 文件的两种打开方式 # 方法一 f = open("data.txt","r") #设置文件对象 f.close() #关闭文件 # 方法二:为了方便,避免忘记close掉这个文件对象,可以用下面这种方式替代 with open('data.txt',"r") as f: #设置文件对象 str = f.read() #可以是随便对文件的操作
python常用的读取文件函数有三种read()、readline()、readlines() 。
read() 为一次性读取文本中全部的内容,以字符串的形式返回结果。
readline() 为只读取文本第一行的内容,以字符串的形式返回结果。readline会读到换行符。
readlines() 为读取文本所有内容,并且以数列(list)的格式返回结果,一般配合”for in“使用。readlines也会读到换行符,为去掉列表中每一个元素的换行符可用 “line = line.strip('\n')“ 方法去除。
# read()函数 f = open("data.txt","r") str = f.read() # 将txt文件的所有内容读入到字符串str中 f.close() # readline()函数 f = open("data.txt","r") line = f.readline() line = line[:-1] while line: #直到读取完文件 line = f.readline() #读取一行文件,包括换行符 line = line[:-1] #去掉换行符,也可以不去 f.close() # readlines()函数1 with open("data.txt", "r") as f: for line in f.readlines(): #readlines会读到换行符 line = line.strip('\n') #去掉列表中每一个元素的换行符 print(line) # readlines()函数2 f = open("data.txt","r") data = f.readlines() #直接将文件中按行读到list里,效果与方法2一样 f.close()
# 其它方法1 data = [] for line in open("data.txt","r"): # 设置文件对象并读取每一行文件 data.append(line) # 将每一行文件加入到list中 # 其它方法2--另将float数据(数组)文件内容读入到数组中的方法 import numpy as np data = np.loadtxt("data.txt") #将文件中数据加载到data数组里
# 简单的将字符串写入txt中 with open('data.txt','w') as f: # 设置文件对象 f.write(str) # 将字符串写入文件中 # 将列表写入文件中 # 单层列表 data = ['a','b','c'] with open("data.txt","w") as f: f.writelines(data) # 双层列表 # 第一种方法,每一项用空格隔开,一个列表是一行写入文件 data =[ ['a','b','c'],['a','b','c'],['a','b','c']] with open("data.txt","w") as f: for i in data: #对于双层列表中的数据 i = str(i).strip('[').strip(']').replace(',','').replace('\'','')+'\n' #将其中每一个列表规范化成字符串 f.write(i) #写入文件 # 第二种方法,直接将每一项都写入文件 data =[ ['a','b','c'],['a','b','c'],['a','b','c']] with open("data.txt","w") as f: for i in data: #对于双层列表中的数据 f.writelines(i) #写入文件 # 将数组写入文件中 import numpy as np # 第一种方法 np.savetxt("data.txt",data) #将数组中数据写入到data.txt文件 # 第二种方法 np.save("data.txt",data) #将数组中数据写入到data.txt文件
注意:引申学习其它文件形式的读写操作,如excel表格文件等。
PS:毕设期间参考学习资料:
1、FuzzyWuzzy:Python中的模糊字符串匹配,地址:FuzzyWuzzy:Python中的模糊字符串匹配 - 程序员大本营 (pianshen.com)
2、【Python】 字符串相似性度量,用difflib还是Levenshtein,地址:(5条消息) 【Python】 字符串相似性度量,用difflib还是Levenshtein兔子爱读书的博客-CSDN博客difflib原理
3、python--str.split()函数分割,地址:(5条消息) python--str.split()函数分割ZongXin.Zhou的博客-CSDN博客python str 分割
4、python:txt文件常用读写操作,地址:(5条消息) python:txt文件常用读写操作_那年聪聪的博客-CSDN博客