我有一个gz文件,我想从文件中提取每列的唯一值,字段分隔符是|,我尝试使用python如下。从gz文件获取每列的唯一值
import sys,os,csv,gzip
from sets import Set
ig = 0
max_d = 1
with gzip.open("fundamentals.20170724.gz","rb") as f:
reader = csv.reader(f,delimiter="|")
for i in range(0,400):
unique = Set()
print "Unique_value for column "+str(i+1)
flag = 0
for line in reader:
try:
unique.add(line[i])
max_d +=1
if len(unique) >= 10:
print unique
flag = 1
break
except:
continue
if flag == 0: print unique
我不觉得它对大文件有效,虽然它在某种程度上工作,但从bash的角度来看这个问题。
任何shell脚本解决方案?
例如我在我的文件中的数据作为
5C4423,COMP,ISIN,CA2372051094,2016-04-19,
41C528,COMP,ISIN,US2333774071,2000-01-01,
B62545,COMP,ISIN,NL0000344265,2000-01-01,2007-05-11
9E7F41,COMP,ISIN,CA39260W1023,2013-02-13,2013-08-09
129DC8,COMP,ISIN,US37253A1034,2012-09-07,
4DE8CD,COMP,ISIN,QA000A0NCQB1,2008-03-06,
,并希望从每列中的所有唯一值。
您解析列表中每列的所有值,每列一列,并使用命令集(your_list),您将获得每个列的唯一值 –
没有示例输入和所需的相应输出,很难猜猜你想要什么...请提供一个[最小化,完整和可验证的示例](https://stackoverflow.com/help/mcve),让那些试图帮助你的人更容易工作。 –
你为什么从'套装进口套装'?这个模块是古老的,自从Python 2.4以来,Python已经有了一个内置的集合类型了。你使用的是什么Python版本?另外,请不要使用'except'命令,而是使用一个命名的异常,否则你可以捕获你不想捕获的东西。 OTOH,我很想知道你希望在那里尝试......除了......块之外。 –