Python文档处理操作(1)——统计分析文档内容

-----案例1:要求-----

读取文件 data1.txt 的内容,统计其中所有不同字符的数量,并输出结果。

-----案例1:代码示例-----

f = open('data1.txt')  # 打开名为 'data1.txt' 的文件,并将文件对象赋值给变量 f
ls = []                # 初始化一个空列表 ls,用于存储文件中出现的不同字符
for line in f:         # 遍历文件对象 f 中的每一行
    for c in line:     # 遍历当前行中的每一个字符
        if c not in ls:  # 如果字符 c 不在列表 ls 中
            ls.append(c)  # 将字符 c 添加到列表 ls 中
f.close()              # 关闭文件
print(len(ls))         # 输出列表 ls 中不同字符的数量

-----案例2:要求-----

统计文件中出现词频最多的前10个长度不小于2个字符的词语,将词语及其出现的词频数按照词频数递减排序后显示在屏幕上,每行显示一个词语,用英文冒号连接词语及其词频。

-----案例2:代码示例-----

import jieba                          # 导入 jieba 库,用于中文分词

f = open('data3.txt')                 # 打开名为 'data3.txt' 的文件,并将文件对象赋值给变量 f
datas = f.read()                      # 读取文件中的所有内容,并将其赋值给变量 datas
data = jieba.lcut(datas)              # 使用 jieba 对文件内容进行分词,结果是一个列表 data,每个元素是一个词

d = {}                                # 初始化一个空字典 d,用于统计每个词的出现次数

for i in data:                        # 遍历分词后的列表 data 中的每个词 i
    if len(i) >= 2:                   # 如果词 i 的长度大于等于 2(过滤掉单个字符的词)
        d[i] = d.get(i, 0) + 1        # 更新字典 d 中词 i 的计数,如果词 i 不在字典 d 中,则添加并设初始值为 1,否则将其计数加 1

ls = list(d.items())                  # 将字典 d 转换为包含键值对的列表 ls,每个元素是一个 (词, 次数) 元组
ls.sort(key=lambda x: x[1], reverse=True)  # 按照词频对列表 ls 进行降序排序,即按每个词的出现次数从高到低排序

for j in ls[:10]:                     # 取排序后列表 ls 的前 10 个元素,遍历每个元素 j(j 是一个 (词, 次数) 元组)
    print('{}:{}'.format(j[0], j[1])) # 打印词和其出现次数,格式为 '词:次数'

f.close()                             # 关闭文件

-----案例2:要求-----

使用 jieba 库对文件 data3.txt 进行中文分词,并统计出现频率最高的词汇,然后将包含该词的句子提取出来,保存到 out.txt 文件中。

-----案例3:代码示例-----

import jieba                          # 导入 jieba 库,用于中文分词

f = open('data3.txt')                 # 打开名为 'data3.txt' 的文件,并将文件对象赋值给变量 f
fo = open('out.txt', 'w')             # 打开名为 'out.txt' 的文件(以写模式打开),并将文件对象赋值给变量 fo

datas = f.read()                      # 读取文件中的所有内容,并将其赋值给变量 datas
data1 = jieba.lcut(datas)             # 使用 jieba 对文件内容进行分词,结果是一个列表 data1,每个元素是一个词

data2 = datas.replace(',', '。')     # 将文件内容中的中文逗号(,)替换为中文句号(。),并将结果赋值给 data2
data2 = data2.split('。')             # 使用中文句号(。)将内容分割成多个句子,结果是一个列表 data2,每个元素是一个句子

d = {}                                # 初始化一个空字典 d,用于统计每个词的出现次数

for i in data1:                       # 遍历分词后的列表 data1 中的每个词 i
    if len(i) >= 2:                   # 如果词 i 的长度大于等于 2(过滤掉单个字符的词)
        d[i] = d.get(i, 0) + 1        # 更新字典 d 中词 i 的计数,如果词 i 不在字典 d 中,则添加并设初始值为 0,否则将其计数加 1

ls = list(d.items())                  # 将字典 d 转换为包含键值对的列表 ls,每个元素是一个 (词, 次数) 元组
ls.sort(key=lambda x: x[1], reverse=True)  # 按照词频对列表 ls 进行降序排序,即按每个词的出现次数从高到低排序

for j in data2:                       # 遍历分割后的句子列表 data2 中的每个句子 j
    if ls[0][0] in j:                 # 如果最高频词(即 ls 列表第一个元素的第一个值)出现在句子 j 中
        fo.write(j.strip('\n') + '\n')# 将句子 j 去除行尾的换行符后写入到文件 fo 中,并附加一个换行符

f.close()                             # 关闭文件 data3.txt
fo.close()                            # 关闭文件 out.txt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值