python re 匹配、查找或搜索后,该如何进行NLP?
我开始写一些代码,目的是抓取句子中的某些“类型”,如果这些类型符合特定条件,就启动一个处理这些“类型”的Python脚本。我发现使用findall这个方法对我现在的工作更有效,所以:
m = re.compile(r'([0-9] days from now)')
m.match("i think maybe 7 days from now i hope")
print m.match("i think maybe 7 days from now i hope")
None
f= m.findall("i think maybe 7 days from now i hope")
print f[0]
7 days from now
这个方法似乎能让我找到我想要的句子部分。接下来,我可以把这个部分交给比如pyparsing模块,利用它的示例脚本将类似自然语言的句子转换成日期时间(我知道还有其他模块,但它们对输入的要求比较严格)。
然后,如果句子的其他部分匹配了另一个“类型”,比如约会、截止日期等,我就可以把这些信息插入到我的在线日记中,或者放到一个托管的网页应用里。
我现在只是随便尝试,但我慢慢在构建一些有用的东西。这个结构和流程是否合理,或者有没有更好的方法?这就是我现在在思考的问题。任何反馈都很受欢迎。
2 个回答
12
之所以m.match()
会失败,是因为它要求匹配的内容必须从字符串的开头开始。
如果你希望在字符串中找到多个(不重叠的)匹配项,那么使用findall()
是合适的。否则,可以使用search()
方法,它会返回找到的第一个匹配项。
这些内容在文档中有详细介绍。