小编pan*_*Seq的帖子

python初学者 - 更快的方式来查找和替换大文件?

我有一个大约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)

python replace

7
推荐指数
3
解决办法
4089
查看次数

numpy 初学者:使用 numpy.savetxt 编写数组

我有一个 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() 行中做错了一些事情。我已阅读文档,但不明白为什么此函数中的任何参数都需要浮点数。我哪里出错了?

python csv numpy histogram

4
推荐指数
1
解决办法
1万
查看次数

写入键:将值对添加到带有变量#s值的制表符分隔文件中

初学者问题:我有一个字典,其中的值是(一个变量#)字符串的列表.最后,我想将每个字典条目写入单个制表符分隔的行,其中键为列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循环将每个值附加到该列表中?我觉得我必须遗漏一些东西.

python csv dictionary writer

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

python ×3

csv ×2

dictionary ×1

histogram ×1

numpy ×1

replace ×1

writer ×1