2012-07-01 2 views
0

변수 값을 기반으로 regexp 검색을하고 싶습니다.Python 3, regex repetition 및 str.format() - 올바른 방법이 무엇입니까?

pattern = re.compile(r"\b[a-zA-Z]{%(min_length)d,}\b" % locals()) 

나는 새로운 str.format() 표기법에 포트를하려고이 같은 뭔가를 얻을 :

pattern = re.compile(r"\b[a-zA-Z]{{0},}\b".format(min_length)) 

을이이 아주 잘 작동 Py2.x에서

ValueError: Single '}' encountered in format string 

확실 요 해요 : 나에게 반복에서 중괄호 str.format에서 사람()와 혼동 같은 오류를 제공합니다 u는 format()이 반복과 충돌하는 곳에서 더 많은 예제를 생각할 수 있습니다.

str.format()을 통해 regexp의 반복에 외부 값을 제공하는 올바른 방법은 무엇입니까? % 연산자는 Py3에서 작동하지 않습니다.

답변

2

그냥 이전 버전을 사용하십시오 - % 문자열 포맷팅은 여전히 ​​Python 3.x에서 지원되며 사라지지 않을 것입니다. 새 구문을 사용하려면 필드를 나타내지 않는 중괄호를 두 번 지정하십시오.

pattern = re.compile(r"\b[a-zA-Z]{{{0},}}\b".format(min_length)) 
+0

감사합니다. 먼저 % 표기법에 구문 오류가 있습니다. 이제는 잘 작동합니다.) 이중 브레이스가있는 팁을 주셔서 감사합니다! – minder