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

2024-05-14 09:41:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在读excel(包含生物数据)文件中的一句话,想提取他们工作的组织。这个文件还包含一些句子,这些句子指定了这个人在哪里学习。 例如:

  • 我在x学院(大学)学习
  • 我是y学院的学生

我想跳过这类句子。你知道吗

我正在使用正则表达式来匹配这些句子,如果它与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”的句子。 如何修改正则表达式以获得结果。你知道吗


Tags: 文件csv数据代码redata生物excel
1条回答
网友
1楼 · 发布于 2024-05-14 09:41:47

这里有两件事:

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

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

而且,\b(x|y)\b是比\bx\b|\by\b更有效的模式,因为它涉及更少的回溯步骤。你知道吗

下面是这个正则表达式的a demo

import re
pat = r"\b(?:{})\b".format('|'.join([r'student',r'study(?:ing)?']))
print(pat)
# => \b(?:student|study(?:ing)?)\b
regEX=re.compile(pat,re.I)
s = "He is studying here."
mObj = regEX.search(s)
if mObj: 
    print(mObj.group(0))
# => studying

相关问题 更多 >

    热门问题