有这样一种场景,输入一个文件,文件的每行包含多个列,根据某一列进行区分,将这一列相同的行输出到一个文件中。
因为不知道输入字段的那一列有多少种取值,因此需要动态创建变量,并写文件。
因为 字典的value值可以重新赋值,因此可以首先判断文件中那一列的取值有多少个,然后将那一列的取值作为key存入字典中,后续使用字典中的这些变量进行写文件。
代码如下:
#!/usr/bin/env python
#coding:utf-8
import sys,os,re
def process(corpus):
tmp_dict = dict()
fin = open(corpus,'r')
for line in fin:
time1 = line.strip().split('\001')[-2]
if time1 not in tmp_dict:
tmp_dict[time1] = 1
else:
pass
fin.close()
print len(tmp_dict)
for key in tmp_dict:
tmp_dict[key] = open(str(key) + ".txt",'a')
fin1 = open(corpus,'r')
for line in fin1:
time2 = line.strip().split('\001')[-2]
tmp_dict[time2].write(line)
for key in tmp_dict:
tmp_dict[key].close()
if __name__ == '__main__':
process("fin.txt")
print 'Done!'