我用它来计算文本中的句子数:
fileObj = codecs.open( "someText.txt", "r", "utf-8" )
shortText = fileObj.read()
pat = '[.]'
for match in re.finditer(pat, shortText, re.UNICODE):
nSentences = nSentences+1
有人告诉我这样更好:
result = re.findall(pat, shortText)
nSentences = len(result)
有区别吗?他们不做同样的事情吗?
最佳答案
第二个可能会快一点,因为迭代完全在 C 中完成。快多少?在我的测试中大约 15%(匹配 'a'
中的 'a' * 16
),尽管随着正则表达式变得更复杂并占用更大比例的运行时间,该百分比将变得更小。但它会使用更多内存,因为它实际上会为您创建一个列表。但是,假设您没有大量匹配项,则不会有太多内存。
至于我更喜欢哪个,我有点喜欢第二个的简洁性,尤其是当组合成一个语句时:
nSentences = len(re.findall(pat, shortText))