나중에 대체 할 자리 표시자를 포함하는 문자열을 가져와야합니다.
"A %s B %s"
그리고 그것을 다음으로 바꾸십시오 :
"A {0} B {1}"
나는 생각해 냈다 :
def _fix_substitution_parms(raw_message):
rv = raw_message
counter = 0
while '%s' in rv:
rv = rv.replace('%s', '{' + str(counter) + '}', 1)
counter = counter + 1
return rv
그것은 효과가 있지만, "아이디 오 매틱"파이썬이 아니라, 매우 어색한 느낌이 든다.
관용적 인 파이썬 솔루션은 어떻습니까?
설명을위한 업데이트 :
- 결과 문자열은 파이썬 내에서 사용되지 않습니다. 내가 어떻게 거기에 카운터 번호가 필요합니다! (그래서
{}충분하지 않습니다)! - 난 단지에 대해 신경 쓸 필요가
%s메시지 만 사용 보장으로, 문자열%s(NO%i %f무엇이든지)
"re.sub"는 번호가있는 중괄호로 동적으로 대체하기위한 대체 기능을 수행 할 수 있습니다. 그건 그렇고 : 숫자없이 {}로 바꾸면 효과가 있습니다.
—
Michael Butscher
작동하는 솔루션이 있고 개선하고 싶을 경우 codereview.stackexchange.com
—
kojiro
@kojiro "너무
—
어리 석다