我正在从excel(包含生物数据)文件中读取一个句子,并希望提取他们工作的组织。该文件还包含指定人员学习地点的句子。 例如:
我想跳过这些类型的句子。
我正在使用正则表达式来匹配这些句子,如果它与学生相关,则跳过该部分,并且只有其他行我想要在单独的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'的句子。 如何修改正则表达式以获得结果。
答案 0 :(得分:1)
这里有两件事:
1)使用re.search
(re.match
仅搜索字符串开头)
2)正则表达式应为regEX=re.compile(r"\b(?:{})\b".format('|'.join([r'student',r'study(?:ing)?'])),re.I)
[ing]
只匹配1个符号,i
,n
或g
,而您打算匹配可选 {{1} } 结尾。具有ing
量词 - ?
- 的非捕获组实际上匹配(?:ing)?
s的1或0个序列。
此外,ing
是一种比\b(x|y)\b
更高效的模式,因为它涉及更少的回溯步骤。
以下是此正则表达式的a demo:
\bx\b|\by\b