Когда я узнал, что модуль 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 ошибки? (неудачная попытка, увиденная в комментариях)
Возможность использовать входные строки в качестве источника для регулярного выражения будет иметь решающее значение для любого действительно полезного сценария, который я имею в виду. (не так много автоматизации происходит иначе) Так что мне было бы приятно, если бы я мог frex. заменить
m=regex.findall("(TTCCGACTACCAAGGCAAATACTGCTTCTCGAC){e<=3}", line)
с
m=regex.findall(nini, line) etc.
Или
m=regex.findall("string{e<=3}", line)