我正在读excel(包含生物数据)文件中的一句话,想提取他们工作的组织。这个文件还包含一些句子,这些句子指定了这个人在哪里学习。 例如:
我想跳过这类句子。你知道吗
我正在使用正则表达式来匹配这些句子,如果它与student相关,那么跳过这部分,只在单独的excel文件中写入其他行。你知道吗
我的代码如下。。你知道吗
CSV数据=熊猫.read\u csv("文件名.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)使用
re.search
(re.match
只在字符串开头搜索)2) 正则表达式应该是
regEX=re.compile(r"\b(?:{})\b".format('|'.join([r'student',r'study(?:ing)?'])),re.I)
[ing]
只匹配一个符号,即i
、n
或g
,而您打算匹配一个可选的ing
结尾。带有?
量词(?:ing)?
的非捕获组实际上匹配了1或0个ing
序列而且,
\b(x|y)\b
是比\bx\b|\by\b
更有效的模式,因为它涉及更少的回溯步骤。你知道吗下面是这个正则表达式的a demo:
相关问题 更多 >
编程相关推荐