2017-09-21 5 views
0

ファイルのコンテンツ(ムービースクリプト)をプリントアウトしようとしていますが、かっこまたは角かっこの間にあるすべてのコンテンツを削除しようとしています。ではなく、ブラケットのため、それは括弧内に含まれるすべてのものが削除されますようテキストファイル内の括弧の間のコンテンツの削除

import re 

file = open('filename','r', encoding="utf-8", errors='ignore') 

newfile = file.read() 

test = re.sub(r'\([^()]*\)', '', output) 

に思える:ここ

は、私がこれまで持っているものです。どんな助け?

+0

@DavyM:はいしかし、それはここでの問題ではありませんが。 –

+0

サンプルの文字列でテストしましたが、動作します。おそらく問題はファイルに 'foo((bar))qux'のような二重括弧が入っていることです。 –

+0

ファイルには二重括弧が含まれていません – Mbaps

答えて

1

正規表現を変更するだけでよいです。あなたは角括弧を含めるために何もしていません。私はあなたが[]を意味すると仮定します。あなたは、あなたの現在の正規表現内の角括弧は、内部の各物の1つと一致するために使用されることがわかります。 ^は実際には一致しないことを意味します。正規表現を使用しない

import re 

with open('filename') as f: 
    newfile = f.read() 

test = re.sub(r'[\(\[].*[\)\]]', '', newfile) 

Try it out

1

:あなたのプログラムは次のようになります

newfile = '''teceft\n frhbfhr(jnjf(frfjrf)vrfhfr)fjnrf\nfrjkerjk(fewnjrfn)ebhjfbwrf\nrbhfhw[fhbewhf]fewhf\n''' 

pas = False 
count = 0 
output = [] 
for elem in newfile: 
    if elem in ("(","["): 
    count += 1 
    pas = True 
    elif elem in (")","]"): 
    count -= 1 
    if count == 0: pas = False 
    elif not pas: 
    output.append(elem) 
output = "".join(output) 
print (output) 

出力:

teceft 
frhbfhrfjnrf 
frjkerjkebhjfbwrf 
rbhfhwfewhf 
関連する問題