我有一个大约1亿行的文件,其中我想用存储在制表符分隔文件中的替代文本替换文本.我工作的代码,但是花了大约一个小时来处理前70K行.在尝试逐步提高我的python技能时,我想知道是否有更快的方法来执行此操作.谢谢!输入文件如下所示:
CHROMOSOME_IV ncRNA基因5723085 5723105. - .ID =基因:WBGene00045518 CHROMOSOME_IV ncRNA ncRNA 5723085 5723105. - .家长=基因:WBGene00045518
并且具有替换值的文件如下所示:
WBGene00045518 21ur-5153
这是我的代码:
infile1 = open('f1.txt', 'r')
infile2 = open('f2.txt', 'r')
outfile = open('out.txt', 'w')
import re
from datetime import datetime
startTime = datetime.now()
udict = {}
for line in infile1:
line = line.strip()
linelist = line.split('\t')
udict1 = {linelist[0]:linelist[1]}
udict.update(udict1)
mult10K = []
for x in range(100):
mult10K.append(x * 10000)
linecounter = 0
for line in infile2:
for key, value in udict.items():
matches = …Run Code Online (Sandbox Code Playgroud) 我有一个 numpy 直方图,我想将其输出为制表符分隔的文本文件。我的代码如下:
targethist = np.histogram(targetlist, bins=ilist)
print targethist
np.savetxt('ChrI_dens.txt',targethist,delimiter='\t')
Run Code Online (Sandbox Code Playgroud)
targetlist 和 ilist 是长整数列表。我得到以下输出:
(array([0, 0, 0, ..., 0, 0, 0]), array([ 1, 10000, 20000, ..., 15060000, 15070000, 15072422])) 回溯(最近一次调用) :文件“target_dens_np.py”,第 62 行,在 np.savetxt('ChrI_dens.txt',targethist,delimiter='\t') 文件“/Library/Frameworks/Python.framework/Versions/7.3/lib/python2. 7/site-packages/numpy/lib/npyio.py”,第 979 行,在 savetxt fh.write(asbytes(format % tuple(row) + newline)) 中 TypeError:需要 float 参数,而不是 numpy.ndarray
似乎直方图数组已创建,但我在 np.savetxt() 行中做错了一些事情。我已阅读文档,但不明白为什么此函数中的任何参数都需要浮点数。我哪里出错了?
初学者问题:我有一个字典,其中的值是(一个变量#)字符串的列表.最后,我想将每个字典条目写入单个制表符分隔的行,其中键为列1,值列表中的各个项目为列2-n.我使用以下代码生成一个输出文件,其中键为列1,值列表为列2,但我不知道如何从那里继续.
mydict = {'spider':['kate', 'susan'],
'fish':['kate'],
'dog':['andy'],
'cat':['andy','colby','jeff']}
f = open('outfile.txt', 'w')
writer = csv.writer(f, delimiter = '\t')
for key, value in orfdict.iteritems():
writer.writerow([orf] + [value])
Run Code Online (Sandbox Code Playgroud)
python文档建议您可以使用zip()创建列表形式键:值对,但是当我在交互式提示符下尝试时:
>>> for key,value in mydict.iteritems():
... mypair = zip(key,value)
... print mypair
Run Code Online (Sandbox Code Playgroud)
我得到了这个奇怪的输出,所以我显然不理解这些事情:
[('f', 'kate')]
[('c', 'andy'), ('a', 'colby'), ('t', 'jeff')]
[('s', 'kate'), ('p', 'susan')]
[('d', 'andy')]
Run Code Online (Sandbox Code Playgroud)
最简单的方法是为字典上的每次迭代创建一个空列表,然后首先将该键附加到该列表,然后使用缩进的for循环将每个值附加到该列表中?我觉得我必须遗漏一些东西.