我正在尝试打印出文件(电影脚本)的内容,但删除括号或括号之间的所有内容(包括括号和括号本身)。
这是我到目前为止所做的:
import re
file = open('filename','r', encoding="utf-8", errors='ignore')
newfile = file.read()
test = re.sub(r'\([^()]*\)', '', output)
它似乎删除括号中包含的所有内容,但不删除括号。有什么帮助吗?
答案 0 :(得分:2)
您只需要修改正则表达式即可。你没有做任何事情来包括括号,我认为你的意思是[
和]
。您可以看到,当前正则表达式中的括号用于匹配其中的每个内容中的一个。 ^
实际上意味着不匹配那些。您的程序应该类似于:
import re
with open('filename') as f:
newfile = f.read()
test = re.sub(r'[\(\[].*[\)\]]', '', newfile)
答案 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