工作需要寫了一個python小函數(shù)。
專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站制作服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)黃岡免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
用fuzzywuzzy模糊匹配技巧解決人工數(shù)據(jù)和標準數(shù)據(jù)的匹配問題.基本原理是先精確匹配,如果沒有,采用模糊匹配遍歷目標空間,選取打分最大。
生物信息處理一些經(jīng)過人工輸入的數(shù)據(jù),往往有少量的錯誤但是這些元數(shù)據(jù)往往要與結(jié)果數(shù)據(jù)統(tǒng)一分析,且非常之重要數(shù)據(jù)量小,那就一個一個改吧,工作需要寫了一個python小函數(shù),用fuzzywuzzy模糊匹配技巧解決人工數(shù)據(jù)和標準數(shù)據(jù)的匹配問題基本原理是先精確匹配,如果沒有,采用模糊匹配遍歷目標空間,選取打分最大的提交用戶檢查,最后輸出結(jié)果。
其他關(guān)于Python的總結(jié)文章請訪問:
正則表達式用來匹配字符串,在python中可以使用 re 模塊來完成,本篇做一個對正則表達式的匹配規(guī)則的總結(jié)
在上述的精確匹配后可以跟上一些符號來進行模糊的匹配:
可以使用中括號的形式進行范圍匹配,中括號表達式后邊可以跟上上述模糊匹配的符號來表示數(shù)量
多個條件可以 緊跟著寫在同一個中括號中 ,比如:
[a-zA-Z] :匹配一個大、小寫字母
re模塊是python獨有的匹配字符串的模塊,該模塊中提供的很多功能是基于正則表達式實現(xiàn)的,
而正則表達式是對字符串進行模糊匹配,提取自己需要的字符串部分,他對所有的語言都通用。
1、字符
2、字符集
3、量詞
貪婪模式:總是嘗試匹配盡可能多的字符
非貪婪則相反,總是嘗試匹配盡可能少的字符。
{0,} 匹配前一個字符 0 或多次,等同于 * 元字符
{+,} 匹配前一個字符 1 次或無限次,等同于 + 元字符
{0,1 }匹配前一個字符 0 次或 1 次,等同于 ? 元字符
如果 () 后面跟的是特殊元字符如 (adc)* 那么*控制的前導(dǎo)字符就是 () 里的整體內(nèi)容,不再是前導(dǎo)一個字符
4、特殊分組用法表:只對正則函數(shù)返回對象的有用
5、斷言
從斷言的表達形式可以看出,它用的就是分組符號,只不過開頭都加了一個問號,這個問號就是在說這是一個非捕獲組,這個組沒有編號,不能用來后向引用,只能當做斷言。
匹配 titlexxx/title 中 xxx : (?=title).*(?=/title)
自己理解就是:
5、例子
(1)非
^(?!.*200).*$ ,只匹配200
^(?!.*[200|400]).*$ ,只匹配200和400
[^a-z] 反取,不含a-z字母的
(2) \u4e00-\u9fa5 中文
(3) r"\b([\u4e00-\u9fa5]\s?[\u4e00-\u9fa5]+)\b" # 小 明 匹配這種單字中間有空格的
compile 函數(shù)用于編譯正則表達式,生成一個正則表達式( Pattern )對象,供 match() 和 search() 這兩個函數(shù)使用
match 嘗試從字符串的 起始位置 匹配一個模式,如果不是起始位置匹配成功的話,返回none。
search 掃描 整個字符串 并返回 第一個成功 的匹配。
re.match與re.search的區(qū)別:
正則表達式替換函數(shù)
替換匹配成功的指定位置字符串,并且返回替換次數(shù),可以用兩個變量分別接受
(2) 兩個字符以上切割,放在 [ ] 中(不保留分隔符):
(3) 使用 ( ) 捕獲分組(保留分割符):
在字符串中找到正則表達式所匹配的所有子串,并返回一個列表,如果沒有找到匹配的,則返回空列表。
注意: match 和 search 是匹配一次 ,findall 匹配所有。
用法:
注意1:一旦匹配成,再次匹配,是從前一次匹配成功的,后面一位開始的,也可以理解為匹配成功的字符串,不在參與下次匹配
注意2:如果沒寫匹配規(guī)則,也就是空規(guī)則,返回的是一個比原始字符串多一位的,空字符串列表
注意3:正則匹配到空字符的情況,如果規(guī)則里只有一個組,而組后面是 * 就表示組里的內(nèi)容可以是 0 個或者多過,這樣組里就有了兩個意思:
一個意思是匹配組里的內(nèi)容,
二個意思是匹配組里 0 內(nèi)容(即是空白)
所以盡量避免用 * 否則會有可能匹配出空字符串
正則表達式,返回類型為表達式對象的
如:_sre.SRE_Match object; span=(6, 7), match='a'
返回對象的,需要用正則方法取字符串,
根據(jù)報錯的信息find這個變量是float類型而不是str類型的,str才有startsWith這個方法,你想找的實際上是excel表格中的值,我覺得你需要先把find這個變量在后臺打印出來,如以下代碼
for?find?in?xx:
print?"@54",?find
if?find.startswith('A1'):
....
...
這類基礎(chǔ)邏輯編程初學(xué)可以手寫邏輯,這個基本如下:
載入基礎(chǔ)信息(Excel地址)
###手動指定###
獲取輸入查詢數(shù)據(jù)
###input()獲取,保存指變量###
打開Excel文件
####使用openpyxl打開,獲取工作簿對象和表對象####
獲取excel有效行與列數(shù)據(jù)
### 可以函數(shù)判斷,最好手工寫非空判斷獲取####
遍歷返回結(jié)果數(shù)據(jù)
### 讀取每個單元格 查詢字符串即可,習(xí)慣用Count還是find函數(shù)看具體需求和習(xí)慣###
寫入文件
同樣可以采用openpyxl寫入excel或者直接寫入txt文件