我需要将两个文件中的行合并,前提是其中一个文件的行是第二个文件行的一部分。在
第一个文件的一部分:
12319000 -64,7357668067227 -0,1111052148685535 12319000 -79,68527661064425 -0,13231739777754026 12319000 -94,69642857142858 -0,15117839559513543 12319000 -109,59301470588237 -0,18277783185642743 12319001 99,70264355742297 0,48329515727315125 12319001 84,61113445378152 0,4060446341409862 12319001 69,7032037815126 0,29803063228455073 12319001 54,93886554621849 0,20958105041136763 12319001 39,937394957983194 0,13623056582981297 12319001 25,05574229691877 0,07748669438398018 12319001 9,99716386554622 0,028110643107892755
第二个文件的一部分:
^{pr2}$我需要创建一个文件,其中的行由以下内容组成:第一个文件中的所有行和第二个文件中的所有行。除了第一列中的文件名。在
如您所见,第一个文件中有多个行,与第二个文件中的一个行对应。我需要对每一行执行该操作,因此输出应该如下所示:
12319000 -94,69642857142858 -0,15117839559513543 mutant 1 12319000 -109,59301470588237 -0,18277783185642743 mutant 1 12319001 99,70264355742297 0,48329515727315125 mutant 2 12319001 84,61113445378152 0,4060446341409862 mutant 2
我写了这个代码:
oocytes = open(file_with_oocytes, 'r')
results = open(os.path.join(path, 'results.csv'), 'r')
results_new = open(os.path.join(path, 'results_with_oocytes.csv'), 'w')
for line in results:
for lines in oocytes:
if lines[0:7] in line:
print line + lines[12:]
但是它打印出这个,而且没有更多的,第一个文件中有45行:
12319000 99,4952380952381 0,3011778623990699 mutant 1 12319000 99,4952380952381 0,3011778623990699 mutant 2 12319000 99,4952380952381 0,3011778623990699 mutant 3
密码怎么了? 或者应该以完全不同的方式来做?在
请注意,除了第二个文件中文件扩展名的长度外,此解决方案不依赖任何字段的长度。在
仅用于测试目的,我使用:
^{pr2}$你应该只使用普通的文件对象。测试数据的输出为:
Python中的文件句柄具有状态;也就是说,它们的工作方式与列表不同。您可以反复遍历一个列表,每次都可以得到所有的值。另一方面,文件有一个位置,下一个
read()
将从该位置开始。迭代文件时,每行read()
。当您到达最后一行时,文件指针位于文件的末尾。文件末尾的read()
返回字符串''
!在您需要做的是在开始时在
oocytes
文件中读取一次,然后存储这些值,可能如下所示:好吧,简单的事情是,你在行尾打印了一行新行,你可以用[0:-1]行去掉它
接下来,“lines[0:7]”只测试行的前7个字符—您想测试8个字符。这就是为什么相同值的“line”被打印出3个不同的突变值。在
最后,您需要关闭和重新打开结果中每一行的卵母细胞。如果未能这样做,则在第一行结果之后结束输出。在
实际上,另一个答案更好-不要为每一行结果打开或关闭卵母细胞-打开它并读入(到一个列表中)一次,然后为每一行结果迭代该列表。在
相关问题 更多 >
编程相关推荐