我尝试在两个文件之间进行链式比较,如果结果在指定的时间间隔内,则打印/写出结果。
这就是我目前所拥有的。
test1文件:
A0AUZ9,7,17 #just this one line
测试2文件:
A0AUZ8, DOC_PP1_RVXF_1, 8, 16, PF00149, O24930
A0AUZ9, LIG_BRCT_BRCA1_2, 127, 134, PF00533, O25336
A0AUZ9, LIG_BRCT_BRCA1_1, 127, 132, PF00533, O25336
A0AUZ9, DOC_PP1_RVXF_1, 8, 16, PF00149, O25685
A0AUZ9, DOC_PP1_RVXF_1, 8, 16, PF00149, O25155
剧本本身:
results = []
with open('test1', 'r') as disorder:
for lines in disorder:
cells = lines.strip().split(',')
with open('test2', 'r') as helpy:
for lines in helpy:
blocks = lines.strip().split(',')
if blocks[0] != cells[0]:
continue
elif cells[1] <= blocks[2] and blocks[3] <= cells[2]:
results.append(blocks)
with open('test3','wt') as outfile:
for i in results:
outfile.write("%s\n" % i)
我的首选输出是在test3中只包含以下行:
在第一列中有匹配的ID
第3列和第4列中的两个数值介于test1文件中给出的值之间
我没有得到输出,我不知道哪里出错了。
它不能按预期工作的原因之一是您正在比较字符串而不是数字。
然而,可能有更好的方法来做你想做的事情。假设第一个文件足够小,可以放入内存:
import csv
from collections import defaultdict
lookup_table = defaultdict(list)
with open('test1.txt') as f:
reader = csv.reader(f)
for row in reader:
lookup_table[row[0]].append((int(row[1]),int(row[2])))
with open('test2.txt') as a, open('results.txt', 'w') as b:
reader = csv.reader(a)
writer = csv.writer(b)
for row in reader:
record = lookup_table.get(row[0])
if record:
if record[0] <= int(row[2]) and record[1] <= int(row[3]):
writer.writerow(row)
我有这个代码: 我的IDE说:这看起来应该简化,即Python链式比较。 什么是链式比较,如何简化?
我正在用PyCharm编写一些python代码。当我编写以下测试时,它给了我一个警告。
假设当前链为Chain2,它的父链为Chain1。Chain2当前的区块为B2.i(B2表示Chain2上的区块,i表示第i个区块),它的ParentHash为B1.j,要求B2.i的时间戳减去B1.j的时间戳大于4分钟且小于5分钟。 时间差大于4分钟(区块确认时间),能够确保区块回滚不影响到父链和子链。 时间差小于5分钟,是为了能够跨多条链访问数据。跨一条链,最大时间差为5分钟;跨n条链,最大时
主要内容:比特币现金如何存在?,什么是比特币硬叉?比特币现金是互联网上的点对点电子现金。它完全分散,没有中央银行,也不需要任何可信赖的第三方运营。 比特币现金是一种从比特币网络的硬分叉开发的加密货币。它从2017年中期开始存在。比特币现金与比特币不同。它是比特币核心软件的升级版本。它使用起来更快,更便宜,更可靠。它将比特币的块大小从1MB增加到8MB,并允许每天处理大约200万个交易。 比特币现金如何存在? 比特币区块链是一个不断更新的分类账,比
问题内容: 用于比较的Python文档说: 可以任意链接比较,例如与等效,不同之处在于比较仅被评估一次(但在两种情况下都被发现为假,则根本不评估)。 所以像(人为的例子): 只要求输入一次。这很有道理。和这个: 仅询问 是否 介于1和10之间,并且仅打印“ woo!”。 if 也在10到20之间(证明它们可以“任意链接”)。这也是有道理的。 但是我仍然很好奇在lexer / parser / co
我有两个整数值和,我写以下语句: 此语句带有下划线,工具提示告诉我必须: 简化链式比较 据我所知,这种比较几乎和它们来的一样简单。我错过了什么? 这个问题和链接有点不同,比较起来有不同的变量。