2013-02-07 6 views
2

저는 Python을 처음 사용하기 때문에 간단한 작업을 수행하는 중에 오류가 계속 발생합니다. 나는 정규 표현식에서 변수를 사용하고 *와 그 대체하기 위해 노력하고있어re.sub에서 변수를 사용할 때 Python TypeError

은 "형식 오류 :하지 포맷 문자열 중에 변환 모든 인수"나에게 오류를 얻을 다음 나는 이유를 말할 수 없다 . 이것은 아주 간단해야합니다.

import re 
file = "my123filename.zip" 
pattern = "123" 
re.sub(r'%s', "*", file) % pattern 

오류 :에 파일 "", 줄 1 : 역 추적 (가장 최근 통화 마지막)? TypeError : 문자열 서식 지정 중에 모든 인수가 변환되지 않습니다.

팁이 있습니까?

+0

는이'의 re.sub을하셨습니까 (R '% s'을 (를) % 패턴 "

은 당신이 아마 원하는 것은 무엇인가 더 좋아하다 * ", file)'? – imreal

+0

라인 l의 코드는 무엇입니까? – Greg

답변

4

당신하고 발생한 문제는이 라인에 변수 filename을 사용하여 기본 제공 file 객체를 섀도 잉하지 않도록하고 작업중인 항목을 더 명확하게 지정하십시오. 그런 다음 (대체 된) 텍스트의 %spattern으로 대체하려고합니다. 그러나 file에는 형식 수정자가 없으므로 표시되는 TypeError으로 연결됩니다. 기본적으로 다음과 같습니다.

'this is a string' % ("foobar!") 

동일한 오류가 발생합니다. 정확히 동일합니다

re.sub(str(pattern),'*',file) 

:

re.sub(r'%s' % pattern,'*',file) 
0

시도 re.sub(pattern, "*", file)? 또는 re을 건너 뛰고 file.replace("123", "*")을 수행하면됩니다.

re.sub(r'%s', "*", file) % pattern 

것은 당신이 (이 경우 문자열 file에서 텍스트 *%s 나타날 때마다 대체하고있는, 내가 이름 바꾸기를 권 해드립니다 :