2017-01-31 10 views
-1

括弧と一重引用符をre.subで置き換えようとしましたが、['flag = no 「]Pythonで文字列['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'" 

編集:

[OK]を、私は引用符についての部分を逃した。

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

あなたの最初のクエリの最初の問題は、Maciekによって説明された:これは修正された正規表現である DATは文字列オブジェクトではありません。

クエリの2番目の問題は、置換する文字を特殊文字の場合は\でエスケープする必要があります。パイプ(a.k.a '|'文字)で連鎖する必要があります。

あなたが交換した文字のリストに空白を追加したい場合たとえば、正規表現に変更されます:あなたは、追加のパイプとスペース文字に気づくはずです

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

1

エラーがdatがリストではなく、文字列であることに起因します。

は試してみてください。ここで

dat = re.findall('flag.*', lst)[0] 
関連する問題