-----案例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