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*$
,该正则表达式able
在sum()
之前需要一个空格,并在行尾允许零个或多个空格(并且没有其他值)。
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))