Ich habe hier einige Beispiele gesehen, aber meine Frage wurde nicht beantwortet: Python Regular Expression Findall mit Variable
Ich versuche, eine Variable anstelle der 9 zu verwenden, aber ich kann es nicht verstehen
value = 9
ORF = re.findall(r"ATG(?:(?!TAA|TAG|TGA)…){ value ,}?(?:TAA|TAG|TGA)",seq)
#obviously doesn"t work or i wouldn"t have made this post
Ich habe es versucht:
value = 9
ORF = re.findall(r"ATG(?:(?!TAA|TAG|TGA)…){ {} ,}?(?:TAA|TAG|TGA)".format(value),seq)
aber habe den Fehler:
ValueError: Single "}" encountered in format string
dann habe ich versucht:
value = r"{}".format(9)
ORF = re.findall(r"ATG(?:(?!TAA|TAG|TGA)...){value,}?(?:TAA|TAG|TGA)",seq)
und bekam keinen Fehler, aber es funktionierte nicht, als ich stromabwärts sah
Wie kann ich erreichen, dass diese Variable in meinem regulären Ausdruck funktioniert?
Antworten:
1 für die Antwort № 1Python beschwert sich darüber, dass es andere gibt {
und }
in Ihrer Zeichenfolge, die nicht für das Format verwendet wird, und sie weiß nicht, wie sie den Unterschied erkennen soll.
Sie müssen auch alle Regex-Zeichen in Ihrem Escape-Zeichen entfernen value
.
Also vielleicht:
ORF = re.findall(
r"ATG(?:(?!TAA|TAG|TGA)…){{{},}}?(?:TAA|TAG|TGA)"
.format(re.escape(value)),
seq)
In einem solchen Fall bezweifle ich jedoch, dass jemand Sie für die Verwendung beschuldigen würde %
-Formatierung oder gute alte Zeichenkettenverkettung :)