import re
sum=0
file = open("pro.txt").readlines()
for lines in file:
        word= len(re.findall('(^|[^\w\-])able#1(?=([^\w\-]|$))', lines))
        if word>0:
                sum=sum+1
print sum


我正在计算文本文件中的单词数,但是我的程序还计算了一些我们不需要的单词,我在其中使用了r.e,但是它没有给我任何适当的帮助
这是我的文本文件

0         6          9     able#1
0         11         34    unable#1
9         12         22    able#1
0         6          9     able#1-able#1
0         11         34    unable#1*able#1


我不希望我的程序计入-able#1 ,able#1-able#1 ,unable#1*able#1这些类型的单词,我只应计入able#1

最佳答案

您可以使用正则表达式\sable#1\s*$,该正则表达式ablesum()之前需要一个空格,并在行尾允许零个或多个空格(并且没有其他值)。

import re
regex = re.compile(r'\sable#1\s*$')
count = 0
with open("pro.txt") as file:
    for line in file:
        if regex.search(line):
            count += 1
print count


您还可以使用和生成器表达式进行计数,如下所示:

with open("pro.txt") as file:
    count = sum(1 for line in file if regex.search(line))

08-24 20:40