首页 > 代码库 > 字符串与csv文件的日常操作

字符串与csv文件的日常操作

本周使用习惯了函数式编程,这样可以节省不少繁琐的步骤,而且对于程序的条理化非常有益。说来简单就是每个东西写成函数,规定输入输出。

下一周的任务就是面向对象了,把对象这个东西搞清楚,说不定可以重写整个文件为对象的操作

这里说几个本周很经常用的方法,一个是构建字符串数据中的字典数据,实际就是一个列表,这个列表我也是参考了一个tf-idf的文档给出的方法,核心思想就是将每一个字符串填入一个list最后将list写入循环对比,如果碰到一样的跳过,如果遇到不一样的输出,并且把这个字符串同样装入到list中,这样建立一个字典表,实验证明还是很有效果的。目测这是一个经典的算法,只是我不知道而已。

代码如下:

def get_list(path1,path2,full_path):#path1为输入的csv文件,path2是保存的txt文件
    csv_file = open(path1)
    text = open(path2,a)
    full_url = open(full_path,a)
    csv_reader = csv.reader(csv_file)
    s = []
    for row in csv_reader:

        for a_ in row:
            a = replace_http(a_)
            if row.index(a_) != 0:#对row这个list中的a位置进行判定,为0的则不再计算
                full_url.write(a_+\n)
            flag = 0
            for i in range(len(s)):
                if a == s[i]:
                    print ..........................................................
                    flag = 1
            if flag ==0 :

                s.append(a)
                if row.index(a_) != 0:
                    text.write(a+\n)
    text.close()
    full_url.close()

其中full_path文件是一个全列表文件,意思是输出所有的字符串,看一看,去重之后的字符串规模和未去重的规模。

对不同的文件进行去重,同样很重要,例如在很多任务中我们经常需要对目标文件建立一个字典,此时的字典文件要求各个条目之间不能重复,这样的情况下我们就需要将两个文件进行去重之后合并(注意:在正常情况下是对一个文件进行去重,对其他文件保留,且最好在去重之后保存的文件顺序与源文件的顺序相同)

下面所示的代码完美解决这一个问题,将一个文件作为主要文件,一个文件作为需要去重的文件,输出为去重之后的文件,具体见代码:

def del_same(path_txt1,path_txt2,out_put):
    b = open(path_txt2,r)
    c = open(out_put,a)
    s = set()
    a = open(path_txt1, r)
    table = open(table.txt,w)
    for line in a.readlines():
        c.write(replace_http(line))
    c.write(\n)
    a.close()
    a = open(path_txt1, r)
    i = 1
    n = 1
    for list1 in b.readlines():
        list1_re = list1.replace(\n,‘‘)
        list1_ok = replace_http(list1_re)
        a = open(path_txt1, r)
        flag = 0
        j = 1
        for list2 in a.readlines():
            list2_re = list2.replace(\n,‘‘)
            list2_ok = replace_http(list2_re)

            if list1_ok == list2_ok:
                flag = 1
                table.write(str(n) + \n)
                print  i =+str(n)
                print  j = +str(j)
            j = j+1
        if flag == 1:
            n = n + 1
            i = i+1
            continue
        else:

            c.write(list1_ok+\n)

        n = n + 1

    c.close()
    print dict文件为+out_put
    print str(b) + 中有+str(i-1)+个重复

在代码中replace_http是一个我写的删除通用字段的函数。

这个脚本在建立字典时很有用。

 

字符串与csv文件的日常操作