import operator
import re


# 1) 统计出文本中的单词的词频,找出词频最高和最低的单词及其词频,并输出。

# 这个是结果
result = {}

# 主函数入口
if __name__ == "__main__":
    try:
        f = open(r"文本解析器.txt", "r", encoding="UTF-8")

        # 避免单词因为大小进行区分
        content = f.read().lower()
        # 找出所有单词
        words = re.findall('[a-z]+', content)

        # 利用字典特性进行统计
        for word in words:
            if word not in result:
                result[word] = 1
            else:
                result[word] += 1

        # 利用sort函数进行排序
        result = sorted(result.items(), key=operator.itemgetter(1), reverse=True)

        # 打印结果
        print(result)
    except BaseException as e:
        print(e)
    finally:
        f.close()

下面是python 中 正则表达的re 模块 

compile(pattern, flags = 0)        匹配任何可选的标记来编译正则表达式的模式,然后返回一个正则表达式对象
match(pattern, string, flags = 0)     使用带有可选标记的正则表达式的模式来匹配字符串。如果匹配成功,返回匹配对象,否则返回None
search(pattern, string ,flags = 0)     使用可选标记搜索字符串中第一次出现的正则表达式模式。如果匹配成功,则返回匹配对象,否则返回None
findall(pattern, string[,flags] )          查找字符串中所有(非重复)出现的正则表达式模式,并返回一个匹配列表
finditer(pattern, string[,flags] )        与findall()相同,但返回的是一个迭代器。对于每一次匹配,迭代器都能返回一个匹配对象
split(pattern, string, max = 0)         根据正则表达式的模式分隔符,split函数将字符串分割为列表,返回匹配列表,分割最多操作max次
group(num = 0)               返回整个匹配对象,或者编号为num的特定子组

例子:

import re
m = re.search('foo','asdasdfooasd')
#这里如果使用match将匹配不到任何字符串,因为match从第一个a开始匹配
if m is not None:
    print(m.group())

 

regex = <(.*)>(.*)<\/(.*)>|<(.*)\/>
m = re.search(regex,"aa<a>aaaa</a>")
#一样只有search能匹配到标签
if m is not None:
    print(m.group())