删除文本文件中括号之间的内容

时间:2017-09-21 19:00:01

标签: python

我正在尝试打印出文件(电影脚本)的内容,但删除括号或括号之间的所有内容(包括括号和括号本身)。

这是我到目前为止所做的:

import re

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

newfile = file.read()

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

它似乎删除括号中包含的所有内容,但不删除括号。有什么帮助吗?

2 个答案:

答案 0 :(得分:2)

您只需要修改正则表达式即可。你没有做任何事情来包括括号,我认为你的意思是[]。您可以看到,当前正则表达式中的括号用于匹配其中的每个内容中的一个。 ^实际上意味着不匹配那些。您的程序应该类似于:

import re

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

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

Try it out

答案 1 :(得分: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