可爱的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)

 

posted @ 2016-12-21 15:52  坏脾气  阅读(311)  评论(0编辑  收藏  举报