我用它来计算文本中的句子数:

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

10-06 09:17