import re
import sys
import collections
查看文件中各个单词出现的频率,并统计其出现位置:
word_re = re.compile(r'\w+') # 正则定义搜索规则
index = collections.defaultdict(list) # 定义index字典中给不存在的key赋值的方法为创建一个空列表作为默认值
with open(sys.argv[1], encoding='utf-8') as fp: #打开运行脚本时的指定文件,编码格式‘utf-8’,将内容命名为fp
for line_num, content in enumerate(fp, 1): #将文件内容利用enumerate()转换成(索引, 内容)格式的索引序列,并分别抽取他的行数及行对应的内容
for match in word_re.finditer(content): # 返回正则匹配的(content)内容的迭代器对象赋值给match
word = match.group() # 翻译match的迭代器的内容并保存在一个分组里,.group() 正则匹配对象分组储存
column_num = match.start()+1 # 获取匹配单词出现的真实位置(索引+1),此位置为单词首字母出现的索引位置
location = (line_num, column_num) # line_num 锁定单词出现的行,column_num 锁定单词出现在此行的位置。
index[word].append(location) # 直接调用字典查询键值,并将location追加给当前查询key即可
for word in sorted(index, key=str.lower): #输出
print(word, index[word])
本文章为学习笔记,仅用于学习和交流,内容来源:《流畅的python》