/ / Verwendung von .format zur Verwendung einer Variablen in einem regex findall-Objekt Python - Regex, String, Variablen, Format, Findall

Verwenden von .format, um die Variable im Regex-Findall-Objekt zu verwenden. Python - Regex, String, Variablen, Format, Fundall

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 № 1

Python 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 :)