반응형
질문
나는 다음과 같은 형식의 매개변수 파일을 가지고 있습니다:
parameter-name parameter-value
매개변수는 어떤 순서로든 있을 수 있지만 한 줄에는 하나의 매개변수만 있습니다. 나는 한 매개변수의 parameter-value
를 새 값으로 바꾸고 싶습니다.
나는 이전에 게시된 라인 교체 함수 를 사용하여 Python의 string.replace(pattern, sub)
을 사용하여 라인을 교체하고 있습니다. 제가 사용하는 정규 표현식은 vim에서 작동하지만 string.replace()
에서 작동하지 않는 것 같습니다.
다음은 제가 사용하는 정규 표현식입니다:
line.replace("^.*interfaceOpDataFile.*$/i", "interfaceOpDataFile %s" % (fileIn))
"interfaceOpDataFile"
은 내가 바꾸려는 매개변수 이름입니다 (/i는 대소문자를 구분하지 않음). 새 매개변수 값은 fileIn
변수의 내용입니다.
Python이 이 정규 표현식을 인식하도록 할 방법이 있을까요? 그렇지 않다면 이 작업을 수행하는 다른 방법이 있을까요?
답변
str.replace()
v2|v3 정규 표현식을 인식하지 못합니다.
정규 표현식을 사용하여 대체를 수행하려면 re.sub()
v2|v3을 사용하세요.
예를 들면:
import re
line = re.sub(
r"(?i)^.*interfaceOpDataFile.*$",
"interfaceOpDataFile %s" % fileIn,
line
)
루프 안에서는 정규 표현식을 먼저 컴파일하는 것이 좋습니다:
import re
regex = re.compile(r"^.*interfaceOpDataFile.*$", re.IGNORECASE)
for line in some_file:
line = regex.sub("interfaceOpDataFile %s" % fileIn, line)
# 업데이트된 라인으로 무언가를 수행합니다
반응형
댓글