Python文件处理练习8

Python文件处理练习8

问题:
《神雕侠侣》是金庸先生在武侠小说创作上的一个里程碑,叙述杨过与小龙女之间的故事。这里给出《神雕侠侣》的网络版本,文件名为“神雕侠侣-网络版.txt”。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

《神雕侠侣》中出现了很多人物,这里给出6个人物名字:杨过、小龙女、李莫愁、裘千尺、郭靖、黄蓉。统计人物之间的关联关系,这里定义一种“亲和度”关系如下:如果某名字A后的100个中文词语中出现上述6个名字中任何一个B,则名字A的亲和度加1。(注意,如果到文本末尾部分,名字A后没有100个中文词语,则有多少算多少)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

杨过-小龙女:1185,杨过-李莫愁:337,杨过-裘千尺:124,…

分析:
本题考查列表,字典,jieba的综合应用能力。
基本思路,首先构造人物关系字典,用jieba进行分词,以jieba结果为蓝本检索名字,并进一步检索关联名字,更新字典,构造列表,最后以字符串形式写入结果

代码:

#extend 8
#神雕侠侣-网络版.txt
#杨过、小龙女、李莫愁、裘千尺、郭靖、黄蓉
#神雕侠侣-人物亲密度.txt
import jieba


fi = open('神雕侠侣-网络版.txt','r',encoding='utf-8')
fo = open('神雕侠侣-人物亲密度.txt','w')
d = {}
names = ['杨过','小龙女','李莫愁','裘千尺','郭靖','黄蓉']
for name1 in names:
    for name2 in names:
        if name1 != name2:
            d[name1 + '-' + name2] = 0


ls = jieba.lcut(fi.read())
for i in range(0,len(ls)-100):
    if ls[i] in names:
        for j in range(1,101):
            if ls[i+j] != ls[i] and ls[i+j] in names:
                d[ls[i] + '-' + ls[i+j]] += 1
                break

ols = []
##ols = list(d.items())
##for k,v in ols:
##    print('{:}:{:}'.format(k,v),end=',')
for k in d:
    ols.append('{:}:{:}'.format(k,d[k]))
#print(','.join(ols))
fo.write(','.join(ols))

fi.close()
fo.close()

资源:
神雕侠侣-网络版及人物亲密度

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值