使用 NLTK RegexpTokenizer 去除方括号之间的文本
Use NLTK RegexpTokenizer to remove text between square brackets
我正在尝试使用 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 demo。
图案详情
(?:
- non-capturing 组的开始:
\[[^][]*]
- [
,然后 [
和 ]
以外的零个或多个字符,然后是 ]
|
- 或者
\s
- 一个空格
)+
- 组中模式序列的一次或多次重复。
我正在尝试使用 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 demo。
图案详情
(?:
- non-capturing 组的开始:\[[^][]*]
-[
,然后[
和]
以外的零个或多个字符,然后是]
|
- 或者\s
- 一个空格
)+
- 组中模式序列的一次或多次重复。