python实例 第1章 第3节 对文本进行分词

1.3.1 编程要点

 1)用split()函数实现多个分隔符分别分隔字符串

导入模块
import re
#生成一个字符串
vstring1='yuyy:好好学习,天天向上!yes'
#调用re模块的split()函数,返回值是一个list类型的变量
vret1=re.split('[:,!]',vstring1)
#打印['yuyy', '好好学习', '天天向上', 'yes']
print(vret1)
#打印vret1长度:4
print(len(vret1))

2)用sort()和sorted()函数对字典型数据进行排序

       sort()函数直接根据原对象进行排序,也就是改变了原对象的排列形式;

        sorted()函数是重新生成一个排好序的对象,不会改变原对象,这里只举例sorted()函数,代码如下所示

#给一个字典变量赋值
dic={'a':100,'b':90,'c':200,'d':10,'e':88}
#调用排序函数sorted(),返回值vret是一个列表变量
vret=sorted(dic.items(),key=lambda item:item[1])
#打印出:[('d',10),('e',88),('b',100),('a',100),('c',200)]
print(vret)

        sorted函数中的第一个参数是参与排序的字典的所有项,第二个参数是key

        items():返回包含(键值,实值)元组的列表

        key通过匿名函数:lambda函数的返回值指定参与排序的数据项

        item表示字典中的元素项,每个元素是由key和value组成,item[1]表示value,item[0]表示key,代码中用item[1]将键值返回给key,表示以键值大小作为排序依据对字典中各项进行排序

1.3.2 代码实现:对文本进行分词

将文本文件中的英文单词找出来(进行分词),并统计每个单词出现的次数,代码如下:


#导入正则表达式相关模块
import re
#定义一个函数,通过该函数查找文本字符串中的每一个单词
#计算每一个单词出现的次数,最后按照出现次数从多到少放到列表变量中
def get_char(txt):
    #通过re.split()函数将英文单词分别取出来,函数的第一个参数是分隔符,
    #第一个参数指定以":" ";" "," "." """和空格(\s)以及多个空格(\s*)作为分隔符,
    #第二个参数是要拆分的字符串
    #通过以下代码把字符串分成一个个单词(以分隔符划分),
    #将分割出来的单词放到列表变量vlist中
    vlist=re.split('[:;,"\s,\s*]',txt)
    #生成字典变量
    vdic_frequency=dict()
    #遍历列表变量vlist
    for vchar in vlist:
        #取出每个单词,并判断字典中是否存在一个元素项(键值对),
        #该项键名是以该单词命名
        if vchar in vdic_frequency:
            #如果存在,将以单词命名的键的值加1
            vdic_frequency[vchar] +=1
        else:
            #不存在,增加一个以单词命名的键,并设置其键值为1
            vdic_frequency[vchar]=1
    #对字典中的项按键值进行排序,并且是倒序排列(reverse=True)
    vdic_sort=sorted(vdic_frequency.items(),key=lambda item:item[1],reverse=True)
    return vdic_sort

#主函数为main
if __name__=='__main__'
    #打开文件,读出文件的文本
    #其中test.txt文件是当前目录下的一篇英文文章,文本类型
    with open('test.text','r') as f:
        vtext=f.read()
    #调用排序
    vstr=get_char(vtext)
    print('列出文本中的英文单词:\n')
    #在终端上打印文本中的单词
    print(vstr)
        


1)get_char()函数的主要流程是:用re模块的split()函数对字符串进行分割,split()函数的第一个参数是一个正则表达式,能识别多个分隔符,以实现正确分离英文单词的目的。split()函数返回一个列表变量,这个列表变量中的每一项是一个单词,接着把单词从列表中取出来加入字典中,这个字典的键名用单词命名,键值(value)将用这个单词在字符串中出现的次数进行赋值,实现的方式是通过循环遍历列表统计出每个单词出现的次数,然后用统计出的数据修改字典;最后按字典的键值大小进行排序,排序的方式是倒序,排序结果是一个列表,列表的每一项是元组,元组由单词和该单词出现的次数两个值组成。

2)主函数的流程是从一个文本文件中读入一个英文长字符串,然后调用get_char()函数取得一个列表变量,再将这个列表变量的内容打印到终端,这样就看到了文本文件中的所有英文单词

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值