可爱的Python_课后习题_CDay−3 通过函式进行功能化

1. 读取某一简单索引文件cdays−3-test.txt,其每行格式为:文档序号关键词,现须根据这些信息将它转化为倒排索引,即统计关键词在哪些文档中,格式如下:包含该关键词的文档数关键词 => 文档序号。其中,原索引文件作为命令行参数传入主程序,并设计一个collect 函式统计“关键字↔序号”结果对,最后在主程序中输出结果至屏幕。

cdays−3-test.txt内容:

1 key1
2 key2
3 key1
7 key3
8 key2
10 key1
14 key2
19 key4
20 key1
30 key3

python代码:

#-*- coding:utf-8 -*-
import sys
import os

def collect(file_path):
    rfile = ""

    try :
        rfile = open(file_path)
    except:
        print u"文件路径不存在"
        sys.exit()

    #读取文件,并将文件内容用列表保存
    key_value_list = list()
    for line in rfile.readlines():
        key_value = line.split()
        key_value_list.append(key_value)

    length = len(key_value_list)
    #用来存储关键词
    value_list = list()
    #用来存储最终结果
    result_list = list()

    for i in range(0, length):
        #如果关键词已经比对过,则忽略,获取下一个关键词
        flag = False
        for temp_value in value_list:
            if temp_value == key_value_list[i][1]:
                flag = True
                break
        if flag:
            continue

        key = list()
        key.append(key_value_list[i][0])
        value = key_value_list[i][1]
        num = 1

        #将关键词和之后的关键词进行比对,相同则数量加1并记录文档序号
        for j in range(i + 1, length):
            if key_value_list[j][1] == value:
                key.append(key_value_list[j][0])
                num += 1

        value_list.append(value)
        result_list.append((num, value, key))

    print result_list

if __name__ == "__main__":
    file_path = u"e:/cdays−3-test.txt"

    collect(file_path)

 

转载于:https://www.cnblogs.com/zhuhaiying/p/6208000.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值