3
當我發現python regex模塊允許模糊匹配時,我越來越高興,因爲它似乎是解決我許多問題的簡單方法。 但現在我有一個問題,我沒有從文檔中找到任何答案。用Python正則表達式編譯模糊正則表達式
如何使用新的模糊值功能將字符串編譯爲正則表達式?
爲了說明我平時的需求,並給樣本的一小段代碼
import regex
f = open('liner.fa', 'r')
nosZ2f='TTCCGACTACCAAGGCAAATACTGCTTCTCGAC'
nosZ2r='AGGTCACATCAACGTCAACG'
#nini=regex.compile(nosZ2r{e<=3})
nimekiri=list(f)
pikkus=len(nimekiri)
count = 0
while (count < pikkus):
line = nimekiri[count].rstrip('\n')
m=regex.findall("(TTCCGACTACCAAGGCAAATACTGCTTCTCGAC){e<=3}", line)
n=regex.findall("AGGTCACATCAACGTCAACG{e<=3}", line)
if bool(m) & bool(n):
print nimekiri[count-1].rstrip('\n')
print line
count = count + 1
f.close()
正如你所看到的正則表達式與fuzzyness的3個錯誤做工精細。但我不得不手動輸入整個字符串(nosZ2f/r)到findall中。 我無法編譯具有錯誤/模糊性值的正則表達式。
將字符串(行nosZ2f/r)轉換爲模糊性值爲3的正則表達式模式的正確語法是什麼? (在註釋行中看到的失敗嘗試)
使用輸入字符串作爲regexp的源的可能性對於我想到的任何實際有用的腳本都是至關重要的。 (沒有太多的自動化,否則) 所以它會很高興我,如果我可以frex。更換
m=regex.findall("(TTCCGACTACCAAGGCAAATACTGCTTCTCGAC){e<=3}", line)
與
m=regex.findall(nini, line) etc.
或者
m=regex.findall("string{e<=3}", line)