如何对字符串中的项进行计数

2024-09-29 17:13:31 发布

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

我试着抓取fileID,完成的是grabFile函数,然后计数句子,由sentcount语句完成。现在我所有的句子数都是0。我刚查过。问题是我的抓取器不是为我抓取摘要。谁能帮我检查一下代码,告诉我有什么问题吗?谢谢。在

grabFile=re.findall(r'File\s+\:\s+(\w\d{7})',mytext)
if len(grabFile) == 0:
    matchFile= "N/A"
else:
    matchFile = grabFile[0]

newtext=re.sub(r'\n','',mytext)
newtext=re.sub(r'\s+','',newtext)
grabAbs=re.findall(r'Abstract\s+\:(\w.+)',newtext)
if len(grabAbs) == 0:
    matchAbs= "N/A"
else:
    matchAbs = grabAbs

#filesents={}
sentcount=0
for each in matchAbs.split('\.'):
    if each =='N/A':
        sentcount=0
    else:
        sentcount +=1
    print sentcount, matchFile

其中一份文件的摘要文本(a95000006):

Abstract :
9500006 Wang This award for a Grant Opportunity for Academic Liaison with Industry (GOALI) research project will develop a new methodology for reducing geometric variation in aluminum automotive space frames.'


Tags: reabstractforlenifelse句子findall
1条回答
网友
1楼 · 发布于 2024-09-29 17:13:31
这行的正则表达式

grabAbs=re.findall(r'Abstract\s+\:(\w.+)',newtext)

假设“Abstract”和冒号“:”之间始终至少有一个空白字符 如果我写的是摘要,我会在摘要后面加上冒号。如果将“\s+”更改为“\s*”,则允许冒号前面没有空格。试试看能不能解决你的问题。 编辑 在看到示例输入之后,问题更可能是冒号后面有一个换行符,而且您没有在正则表达式上设置多行搜索标志。试试这个:
grabAbs=re.findall(r'Abstract\s+\:(\w.+)',newtext, flags=re.M)

编辑

@jammon指出,我提到的那一行上面的行删除了所有空格。因此,冒号前的空格将被删除。另外,上面删除所有换行符的行。因为冒号后面的换行符被删除,所以捕获组中的\w不能匹配。也许捕获组应该是(.+),如下所示:

^{pr2}$

相关问题 更多 >

    热门问题