fuzzywuzzy库
fuzzywuzzy的作用在于模糊匹配,或者说模糊搜索。
常用的fuzz库函数使用方式。
1.fuzz.ratio() ##用于比较字符串的相似程度,并进行输出匹配值。
举例:
from fuzzywuzzy import fuzz
x = fuzz.ratio("hello","hi")
print(x)
在这,函数fuzz.ratio()会对其内涵的两个字符串"hello"与"hi"进行相似度匹配,随后被print出来。
2.= fuzz.partial_ratio() ##允许字符串长度不同,只要部分匹配就会得到较高的分数。
(从下文开始省略form fuzzywuzzy import fuzz)
举例:
x = fuzz.partial_ratio("hello world", "world")
print(x)
3.fuzz.token_sort_ratio() ##在进行相似度比较之前,此函数会先对字符串中的单词,或者说字符进行一个排序,在排序完成之后再进行比较。换句话说,这个函数更重视的是内涵字符的个体相似。
举例:
a = “zero one two three four five six seven eight nine”
b = “nine eight seven six five four three two one zero”
x = fuzz.token_sort_ratio(a,b)
print(x) ##此处的输出结果将会等于100,即使它们的顺序完全相反。
4.fuzz.token_set_ratio() ##它不但有fuzz.token_sort_ratio()的排序性,还会对唯一性进行考虑。
举例:
x = fuzz.token_set_ratio("apple pie pie 66","pie apple pie")
print(x) ##此时得到的数字是100,因为第二个参数完全等于第一个参数的一部分,即使它们二者存在“66”的差别。
r = fuzz.token_set_ratio("apple pie pie 66","pie apple pie 77")
print(r) ##而此时,它们的相似度会下降,因为他们其中的某一个参数不会完全等于另一个参数或另一个参数的某一部分。
重点:
5.threshole = 100~0 ##这个函数的目的是用来规定模糊阈值(100到0),也就是说,在两个被比较的目标得出的数值之后,在进行一个阈值比较,如果满足这个阈值条件才会被视为匹配成功。
示例:
from fuzzywuzzy import fuzz
threshold = 70 # 设置阈值为70
string1 = "zero one two"
string2 = "zero one three"
x = fuzz.ratio(string1, string2) #此处的匹配结果为77
if x >= threshold: #进行比较,也就是77与设置的阈值70进行比较
print(f"配对成功!匹配的相似度为 :{x}.")
openpyxl库
openpyxl库的作用在于读写excel文件。
常用的openpyxl库函数方式
1.加载工作簿
openpyxl.load_workbook(你的excel文件路径) #加载一个excel文件
2.创建工作簿
openpyxl.workbook() #创建一个新的excel文件
3.获取工作表
workbook.active #获取活动的表
workbook['你的工作表名'] # 通过工作表名获得工作表,其中工作表名默认为Sheet1
workbook.sheetnames #获取所有工作表的名称
4.读取单元格数据
worksheet.cell(row=所需行的数字,column=所需列的数字).value #获取指定的行与列的单元格
示例:
worksheet.cell(row=1, column=1).value #此时获取的就是第一行第一列
5.写入单元格数据
worksheet.cell(row=所需行的数字,column=所需列的数字) #将新的值写入你所指定的行与列
6.获取行与列的范围
worksheet.iter_rows(min_row=所需起始行的数字, max_row=所需结束行的数字, min_col=所需起始列, max_col=所需结束列, values_only=True) #获取指定范围内的行列4
示例:
worksheet.iter_rows(min_row=1, max_row=5, min_col=1, max_col=3, values_only=True)
#此时,这行代码会选取起始于第1行,结束于第5行,起始于第1列,结束于第5列的范围,而values_only=True则表示返回每个单元格的值而不是单元格的对象。
7.插入行与列
插入行:
worksheel.insert_rows(idx,amount=1) #idx为插入行的索引,而amount则是要插入的行数,它默认等于1
插入列:
worksheel.insert_cols(idx,amount=1) #dx为插入列的索引,而amount则是要插入的列数,它默认等于1
示例:
worksheet.insert_rows(2, amount=3) #在第2行之后插入3行
worksheet.insert_cols(4, amount=2) #在第4列之后插入2列
8.删除行与列
删除行:
worksheet.delete_rows(idx, amount=1) #idx为删除行的索引,而amount则是要删除的行数,它默认等于1
删除列:
worksheet.delete_cols(idx, amount=1) #dx为删除列的索引,而amount则是要删除的列数,它默认等于1
示例:
worksheet.delete_rows(3, amount=3) #删除第3行开始的3行
worksheet.delete_cols(5, amount=4) #删除第5列开始的4列
9.保存工作簿
workbook.save(你所希望保存的工作簿的文件路径) #save的作用是将工作簿保存到指定的文件路径
提醒:在使用openpyxl.load_workbook来加载现有文件的情况下,使用workbook.save将会覆盖原始文件
示例:
#加载现有工作簿
workbook = openpyxl.load_workbook("1.xlsx")
#经过一系列修改.....
#保存工作簿
workbook.save("2.xlsx") #此时,你原有的1.xlsx,在经过你的修改后通过save的方法保存到名为2.xlsx的新文件中。
下一期更新两者的结合使用,以此达到用python对excel文件的模糊搜索与定位。