如何计算字符串中的项目

时间:2014-04-22 05:14:33

标签: python count

我正在尝试抓取fileID,完成了grabFile函数,然后计算句子,由sentcount语句完成。现在我的所有句子数都是0。我刚回来看看。问题是我的grabAbs不适合我。任何人都可以帮我检查代码,让我知道是什么问题?感谢。

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):

  

摘要:
  9500006 Wang此奖项为学术联络与工业(GOALI)研究项目提供机会,将开发一种减少铝制汽车空间框架几何变化的新方法。'

1 个答案:

答案 0 :(得分:0)

<德尔> 这一行的正则表达式

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

<德尔> 假设在&#39;抽象&#39;之间总是至少有一个空白字符。和结肠&#39;:&#39; 如果我正在写一个摘要,我会把_ Abstract:在我的abstract_的文本中用冒号放在Abstract之后。如果将`\ s +`更改为`\ s *`,则允许冒号前没有空格的情况。试试看,看看它是否解决了你的问题。 - 编辑 - 在看到您的示例输入后,问题更可能是在冒号后面有换行符,并且您没有在正则表达式上设置多行搜索标记。试试这个:
grabAbs=re.findall(r'Abstract\s+\:(\w.+)',newtext, flags=re.M)

- 编辑 -

@jammon指出我提到的那一行上方的行删除了所有空格。因此,结肠前的空格将被删除。此外,上面的行删除所有换行符。由于删除冒号后的换行符,捕获组中的\w无法匹配。也许捕获组应该只是(.+)

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