我有两个文件,每一列包含两列,第一列的行通常是相似的。在
文件1.csv
C(2)—C(1) 1.5183
C(3)—C(2) 1.49
C(3)—C(1) 1.4991
O(4)—C(3) 1.4104
H(10)—O(4) 0.964
C(2)—C(1)—C(3) 59.19
C(3)—C(1)—H(5) 118.4
文件2.csv
^{pr2}$在这里,首先比较python和filertone.csv中的“filertone”和“filertone.csv”两行。在
import itertools
files = ['file1.csv', 'file2.csv']
d = {}
for fi, f in enumerate(files):
fh = open(f)
for line in fh:
sl = line.split()
name = sl[0]
val = float(sl[1])
if name not in d:
d[name] = {}
if fi not in d[name]:
d[name][fi] = []
d[name][fi].append(val)
fh.close()
for name, vals in d.items():
if len(vals) == len(files):
for var in itertools.product(*vals.values()):
if max(var) - min(var) <= 20:
out = '{}\t{}'.format(name, "\t".join(map(str, var)))
print(out)
break
在输出.csv在
C(2)-C(1) 1.5183 1.5052
C(3)-C(2) 1.49 1.505
C(3)-C(1) 1.4991 1.5037
C(2)-C(1)-C(3) 59.19 60.3
C(3)-C(1)-H(5) 118.4 116.99
但是我没有找到一个主意来打印不同的线条。在
我想要的输出:
similar_lines
C(2)-C(1) 1.5183 1.5052
C(3)-C(2) 1.49 1.505
C(3)-C(1) 1.4991 1.5037
C(2)-C(1)-C(3) 59.19 60.3
C(3)-C(1)-H(5) 118.4 116.99
different_lines
O(4)-C(3) 1.4104 non
H(10)-O(4) 0.964 non
S(4)-C(3) non 1.7976
H(10)-S(4) non 1.3445
C(2)-C(1)-H(6) non 117.68
您可以使用
itertools.groupby
:输出:
^{pr2}$相关问题 更多 >
编程相关推荐