1

我需要替换'|' 进入选项卡,以便我可以分析我的人类注释基因组数据(200+mb)。我是一名研究助理,学习如何以最简单/最简单的方式分析/操作测序数据,以便我可以在更多数据上复制它。

这是我的数据的样子。一个文件中有大约 400,000 行此类数据。

       ANN=C|downstream_gene_variant|MODIFIER|OR4G4P|ENSG00000268020|transcript|ENST00000606857|unprocessed_pseudogene||n.*1414T>C|||||1414|,C|intron_variant|MODIFIER|OR4G4P|ENSG00000268020|transcript|ENST00000594647|unprocessed_pseudogene|1/1|n.20-104T>C||||||;DP=11;SS=1;VT=SNP

我尝试使用此代码替换“|” 进入 '\t' 几行。

import csv
infile = 'Book2.xlsx'
with open(infile , 'r') as inf: 
    for line in inf:    
        w =csv.writer(inf, delimiter = '\t')
        print w

我得到的只是这个:

<_csv.writer object at 0x7f8beebaafc8>
<_csv.writer object at 0x7f8beebaafc8>
<_csv.writer object at 0x7f8beebaafc8>
<_csv.writer object at 0x7f8beebaafc8>
<_csv.writer object at 0x7f8beebaafc8>
<_csv.writer object at 0x7f8beebaafc8>
<_csv.writer object at 0x7f8beebaafc8>
<_csv.writer object at 0x7f8beebaafc8>
<_csv.writer object at 0x7f8beebaafc8>
<_csv.writer object at 0x7f8beebaafc8>
<_csv.writer object at 0x7f8beebaafc8>
<_csv.writer object at 0x7f8beebaafc8>
<_csv.writer object at 0x7f8beebaafc8>
<_csv.writer object at 0x7f8beebaafc8>
<_csv.writer object at 0x7f8beebaafc8>
<_csv.writer object at 0x7f8beebaafc8>
<_csv.writer object at 0x7f8beebaafc8>
<_csv.writer object at 0x7f8beebaafc8>
<_csv.writer object at 0x7f8beebaafc8>
4

3 回答 3

1

尝试使用正则表达式。一行示例:

a = "ANN=C|downstream_gene_variant|MODIFIER|OR4G4P|ENSG00000268020|transcript|ENST00000606857|unprocessed_pseudogene||n.*1414T>C|||||1414|,C|intron_variant|MODIFIER|OR4G4P|ENSG00000268020|transcript|ENST00000594647|unprocessed_pseudogene|1/1|n.20-104T>C||||||;DP=11;SS=1;VT=SNP"


import re
regex= re.compile(r'\|')
regex.sub("\t",a)
于 2015-10-20T02:29:59.617 回答
0

您的文件名表示 excel,但现在我假设您实际上有一个 tsv(制表符分隔)文件而不是 Excel 文件。如果是这样

infile = 'Book2.tsv'
of = 'Book2.csv'
with open(infile , 'r') as inf: 
    for line in inf:
         of.write(line.replace('|',','))
of.close()

当然,如果 Excel 不同,请尝试 xlrd Udacity 在“使用 MongoDB 进行数据处理”中有一些很好的课程

于 2015-10-20T02:52:36.353 回答
0

print w只是打印您创建的全新csv.writer对象(您可能并不是要在每个循环上创建一个新的编写器)。如果要写入,请使用实际writerow方法文档页面上有很多用于阅读和写作的示例代码csv,您只需将它们组合起来(并为每个使用另一种方言)。

您实际上并没有使用csv.reader,即使您使用了,您的输入文件也是.xlsx,它不是 CSV、管道分隔或其他任何格式,它是一种更复杂的数据格式(Office XML,它是一个 zip 文件,所以它直接读取时看起来像二进制乱码)csv无法读取。

于 2015-10-20T01:43:26.477 回答