Python练习册第04题
程序员文章站
2024-03-18 23:38:40
...
要统计单词数,第一个想到的当然是用正则表达式把整片文章捋一遍,但是发现个tricky的地方,像[email protected]这样的邮件地址,单纯地去掉中间的.和@这样的符号,会让单词拼接起来变成exampletestcom这样,统计的时候就变成一个单词了,所以折中的办法是去符号替换成空格,再按空格分割来读取字符串,再统计纯英文单词的数量就行了
import os, re
if __name__ == '__main__':
count = 0
with open('sample.txt', 'r', encoding = 'utf-8') as file:
while True:
#一次读一行,处理一行再读下一行,省内存
str = file.readline()
#读到文件结尾终止
if str == '':
break
else:
#去掉换行符
buf = str.strip()
#用正则表达式去掉字母、数字、空格以外的字符
#这里有点tricky的地方,文本里可能会有邮件地址这样的字符串
#如果上一步单纯地去掉.和@这样的符号,会让几个单词拼接成一个字符串
#所以干脆把所有字母、数字、空格以外的字符,全替换成空格
buf = re.sub(r'[^a-zA-z0-9 ]', ' ', str)
#然后再按空格分割字符串就行了
buf = buf.split(' ')
for i in buf:
#判断是否只含有字母
if(i.isalpha()):
count += 1
print(count)
sample.txt我取了stack overflow上面的privacy policy,本来试图把文本的一部分放进word里面看看它统计出来多少单词,发现word根本没有统计纯英文单词数量的功能,所以只能自己把过滤完的文本,按一个单词一行打印出来,自己稍微看了一眼,感觉没问题
如果这样过滤有问题的话,请指出
上一篇: 1032 挖掘机技术哪家强
下一篇: 随机密码生成
推荐阅读