python - 使用 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)
请参阅正则表达式演示。
图案细节
(?:
- 非捕获组的开始:\[[^][]*]
- a ,然后是除and之外的[
零个或多个字符,然后[
]
]
|
- 或者\s
- 一个空格
)+
- 组中模式序列的一个或多个重复。
推荐阅读
- javascript - 将自定义 ACE 编辑器模式导入 Brace 时,需要调用找不到帮助模块
- jmeter - 为什么即使我启用了“检索所有嵌入式资源”,JMeter HTTP 响应正文中也不存在 React 元素?
- python - 如何将用户输入保存到 QTableWidget
- c++ - 为什么在函数参数处传递 (i)/(o)/(f)) 流对象需要引用
- php - 打开 SSL 支持已禁用
- assembly - ADC 和 SBB 的关联性
- javascript - Moment onSameOrBefore 函数始终为假
- android - 如何在 Android 的多模块应用程序中配置 firebase
- python - Spotipy:AttributeError:'list' 对象没有属性'split'
- javascript - 无法附加脚本文件