python将“|”更改为tab delimenated

2024-04-20 08:28:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将“|”替换为tab,这样我就可以分析我的人类注释基因组数据(200+mb)。我是一名研究助理,学习如何以最简单的方式分析/操作测序数据,以便在更多的数据上进行复制。你知道吗

下面是我的数据。一个文件中约有400000行此类数据。你知道吗

       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>

Tags: csv数据objecttabinfileatwriterinf
3条回答

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

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)

print w只是打印您创建的全新的csv.writer对象(您可能并不打算在每个循环上创建一个新的writer)。如果您想写入它,请使用the actual ^{} method。有很多example code on the ^{} docs page for reading and writing,您只需要将它们组合起来(并为每种语言使用另一种方言)。你知道吗

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

您的文件名指示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的数据争用”中有一些很好的教训

相关问题 更多 >