2017-01-31 3 views
-1

괄호와 작은 따옴표를 re.sub를 사용하여 공백으로 대체하려고합니다. ['flag = no ']문자열에서 공백으로 [[] '을 공백으로 대체하는 방법 ['flag = no '] 파이썬으로

import re 
import subprocess 
#string to search text 
lst = r'(flask) C:\Users\user1\AppData\Local\Programs\Python\Python35-enter code heretion>python secureassistchk.py flag = no' 
#search flag = no within string & return "['flag = no'] 
dat = re.findall('flag.*', lst) 
print("Print FLAG:", dat) 
# replace [' with blank space , this doesn't work 
#dat3 = re.sub('[\(\)\{\}<>]', '', dat) 
#dat3 = re.sub('\b[]\b','', dat) 
dat3 = re.sub('[ ]','',dat) 
print("Print FLAG:", dat3) 
+0

그 던지기에 어떤 오류가 있습니까? – usr2564301

답변

-1

, 나는 당신을 위해 그것을 해결 :

코드 : dat3 = re.sub('\[|\]','', str(dat)) print("Print FLAG:", dat3)

결과 :

"'flag = no'" 

편집 :

좋아, 나는 따옴표에 관한 부분을 놓쳤다.

dat3 = re.sub('\[|\]|\'','', str(dat)) 

초기 쿼리의 첫 번째 문제는 Maciek에 의해 설명되었다 :이 수정 된 정규식 DAT는 문자열 개체가 아닙니다.

쿼리의 두 번째 문제점은 바꾸려는 문자가 특수 문자 인 경우 \로 이스케이프 처리해야한다는 것입니다. 그것들을 파이프 (a.k.a '|'문자)로 묶어야합니다. 당신은 추가 배관과 공간 문자를주의해야

dat3 = re.sub('\[|\]|\'| ','', str(dat)) 

: 당신은 대체 문자 목록에 공백을 추가 할 경우, 예를 들어

는 정규식이 변경됩니다.

1

오류가 dat이 목록이 아니라 문자열이라는 사실에 기인한다.

시도 : 여기

dat = re.findall('flag.*', lst)[0] 
관련 문제