使用NLTK RegexpTokenizer删除方括号之间的文本



我正试图使用NLTK RegexpTokenizer:从转录本中删除正方形之间的所有文本

file = open('speakers.txt', 'r')
read_file = file.read()
tokenizer = nltk.RegexpTokenizer(r'[[(?:[^]|]*|)?([^]|]*)]]')
new_words = tokenizer.tokenize(read_file)
print(new_words)
[]

但是,此代码只会导致[]的输出。我需要更改什么才能使其覆盖[]及其内容?

您需要使用(?:[[^][]*]|s)+正则表达式并添加gaps=True参数,以使用方括号内的任何字符串进行拆分,方括号内没有内括号、嵌套括号和空白:

tokenizer = nltk.RegexpTokenizer(r'(?:[[^][]*]|s)+', gaps=True)

请参阅regex演示。

图案详细信息

  • (?:-非捕获组的开始:
    • [[^][]*]-一个[,然后是除[]之外的零个或多个字符,然后是]
  • |-或
    • s-空白
  • )+-组中模式序列的一次或多次重复

最新更新