从网上下载的《牛津高阶英汉词典》是以文本的形式存在于A-Z的文件夹中。每个文件夹有多个文件。如图:
文件夹A里的文件有:
其它文件夹基本也是多个文件。
基本思路是通过文件夹遍历找出所有文件。然后对这些文件逐个应用正则表达式进行搜索,提取单词列表。经过前面若干天的学习,填了一个又一个坑,现在可以给出一个比较成熟的代码了。
import re p=re.compile(r"\b[-a-z]{2,40}\s?\r\n") #遍历文件夹下所有子文件夹即文件, #返回包括子文件夹在内的全部文件 def list_all_files(dir): import os.path _files=[] list=os.listdir(dir) for i in range(0,len(list)): path=os.path.join(dir,list[i]) if os.path.isdir(path): _files.extend(list_all_files(path)) if os.path.isfile(path): _files.append(path) return _files #用来进行单词计数 count=0 files=list_all_files("oxford-dict") with open("listofwords.txt","w") as f: for file in files: f.write("\n"+file+"\n") with open(file,"rb") as fr: str=fr.read().decode("gbk","ignore")#别忘了“ignore”,此坑甚大。 words=re.findall(p,str) #去除重复的单词 word_remove_duplication=[] for word in words: if word not in word_remove_duplication: word_remove_duplication.append(word) #将单词写入文本 for s in word_remove_duplication: f.write(s) count=count+1 f.write("单词数量大约是:{}".format(count))
输出文本如下: