首页 > 解决方案 > 使用 Python 正则表达式抓取多个单词

问题描述

我正在尝试通过创建 python 脚本并使用正则表达式来解析单词。如何标记我要解析的单词。我对此很陌生,并试图学习,这甚至接近吗?

import re

data = open('data.txt')

for line in data:
    if re.split((r'\s*', 'hack steal exploit compromise'), line):
        print line

标签: pythonregex

解决方案


如果你运行你的代码,你会看到你将错误的参数传递给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.searchor来实现解析器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"

推荐阅读