0

我有一个 csv 文件,有 2 列,大约 1000 行。每个单元格包含 1 到 100 个值。

我有两列由:分隔,值由'value','value'分隔。这是我文件的一部分:

'P08588 ':'P08172', 'P11229', 'P20309 '
'P15121 ':'P10145', 'P15121', 'P23219', 'P35354', 'P41222', 'P43116'
'P08588 ':'P23219', 'Q8TCC7 '

这是我拥有的代码。

array1 =('P15121 ')
array2 = ('P10145', 'P15121', 'P23219', 'P35354', 'P41222', 'P43116')
f = set(array1) & set(array2)
print f

从这里我得到一个输出:P15121

我显示的代码只有在我手动输入数组的值时才有效(所以从原始文件复制和粘贴)

我想写一个代码,这使得:

打开我的 csv 文件,

然后,阅读第一行,

将 2 列放入变量中,

检查列是否具有共同值

将结果打印到第三列

然后转到下一行,并执行相同的操作。

谢谢

4

1 回答 1

1

大概您正在尝试按照以下方式做一些事情:

infile = open(YourFilename)
for line in infile.read():
    (A, B) = line.split(':')
    As = [eval(a).strip() for a in A.split(',')]
    Bs = [eval(b).strip() for b in B.split(',')]
    Com = [A for A in As if A in Bs]
    print As, ':', Bs, '::', Com

编辑:更正了上述内容。

>>> infile = open("temp.txt")
>>> for line in infile:
...     if len(line) > 2:
...         (A, B) = line.split(':')
...         As = [eval(a).strip() for a in A.split(',')]
...         Bs = [eval(b).strip() for b in B.split(',')]
...         Com = [A for A in As if A in Bs]
...         print As, ':', Bs, '::', Com
... 
['P08588'] : ['P08172', 'P11229', 'P20309'] :: []
['P15121'] : ['P10145', 'P15121', 'P23219', 'P35354', 'P41222', 'P43116'] :: ['P15121']
['P08588'] : ['P23219', 'Q8TCC7'] :: []
>>> 
于 2013-06-28T13:42:31.070 回答