使用Python正则表达式来刮取多个单词

时间:2018-06-14 04:18:36

标签: python regex

我试图通过创建python脚本并使用正则表达式来解析单词。如何标记我试图解析的单词。我对此非常陌生,并试图学习,这是否接近?

import re

data = open('data.txt')

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

1 个答案:

答案 0 :(得分:2)

如果您运行代码,则会发现您将错误的参数传递给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.searchre.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(和re.match),如果该行包含任何单词&#34; hack&#34;,&#34;则返回MatchObject。窃取&#34;,&#34;利用&#34;或&#34;妥协&#34;或None如果该行不包含任何这些词。

然后你可以得到captured group,这将是匹配的4个单词之一。

上面的脚本将打印如下内容:

hack        # data.txt: "blah blah blah hack"
compromise  # data.txt: "compromise blah blah"
exploit     # data.txt: "blah exploit blah"