python - 使用 Python 正则表达式抓取多个单词
问题描述
我正在尝试通过创建 python 脚本并使用正则表达式来解析单词。如何标记我要解析的单词。我对此很陌生,并试图学习,这甚至接近吗?
import re
data = open('data.txt')
for line in data:
if re.split((r'\s*', 'hack steal exploit compromise'), line):
print line
解决方案
如果你运行你的代码,你会看到你将错误的参数传递给re.split
:
Traceback (most recent call last):
File "test.py", line 6, in <module>
if re.split((r'\s*', 'hack steal exploit compromise'), line):
...
raise TypeError("first argument must be string or compiled pattern")
TypeError: first argument must be string or compiled pattern
我不知道你想做什么re.split
。
但是您可以使用re.search
or来实现解析器re.match
:
import re
data = open('data.txt')
for line in data:
matches = re.search('(hack|steal|exploit|compromise)', line)
if matches:
print matches.group(1) # get the 1st parenthesized group
上面的代码使用re.search
(and re.match
), MatchObject
如果该行包含任何单词“hack”、“steal”、“exploit”或“compromise”,或者None
该行不包含任何这些单词,则返回 a。
然后你可以得到捕获的组,这将是匹配的 4 个单词之一。
上面的脚本将打印如下内容:
hack # data.txt: "blah blah blah hack"
compromise # data.txt: "compromise blah blah"
exploit # data.txt: "blah exploit blah"
推荐阅读
- flutter - 将资产图像加载到 Flutter 上的图像材料时出错
- reinforcement-learning - 如何处理强化学习中的同时动作
- compiler-construction - 将方案转换为 CPS 以脱糖 call/cc
- for-comprehension - 以下代码片段的理解等价物是什么?
- node.js - 如何使用 heroku 发布 API 项目?
- python - Flask 应用程序似乎无法在 Heroku 找到相关父包
- javascript - React Native - Firebase onSnaphot + FlatList 分页
- react-native - 如何在反应原生 webview 或 exoplayer 中播放 Widevine drm 内容?
- android - 播放控制台 - 使用不同版本的 apk 上传失败,已经有一个版本 1 - 但我有版本 2
- python - 如何在电报机器人中运行时停止工作