如何排除包含特定单词的句子

时间:2016-05-18 09:50:57

标签: python regex nlp

我正在从excel(包含生物数据)文件中读取一个句子,并希望提取他们工作的组织。该文件还包含指定人员学习地点的句子。 例如:

  • 我在' x'制度上(大学)
  • 我的学生在' y'学院

我想跳过这些类型的句子。

我正在使用正则表达式来匹配这些句子,如果它与学生相关,则跳过该部分,并且只有其他行我想要在单独的excel文件中写入。

我的代码如下..

csvdata = pandas.read_csv(" filename.csv",",");     对于csvdata中的数据:

        regEX=re.compile('|'.join([r'\bstudent\b',r'\bstudy[ing]\b']),re.I)
        matched_data=re.match(regEX,data)   
        if matched_data is not None:
            continue

        else:
            ## write the sentence to excel

但是,当我检查新创建的excel文件时,它仍然包含包含' student',' study'的句子。 如何修改正则表达式以获得结果。

1 个答案:

答案 0 :(得分:1)

这里有两件事:

1)使用re.searchre.match仅搜索字符串开头)
 2)正则表达式应为regEX=re.compile(r"\b(?:{})\b".format('|'.join([r'student',r'study(?:ing)?'])),re.I)

[ing]只匹配1个符号,ing,而您打算匹配可选 {{1} } 结尾。具有ing量词 - ? - 的非捕获组实际上匹配(?:ing)? s的1或0个序列。

此外,ing是一种比\b(x|y)\b更高效的模式,因为它涉及更少的回溯步骤。

以下是此正则表达式的a demo

\bx\b|\by\b