python 更改 '|'进入脱色标签
python to change '|' into tab delimenated
我需要替换“|”进入选项卡,以便我可以分析我的人类注释基因组数据 (200+mb)。我是一名研究助理,正在学习如何 analyze/manipulate 以 easiest/simplest 的方式对数据进行排序,以便我可以在更多数据上复制它。
这是我的数据的样子。一个文件中大约有 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>
print w
只是打印您创建的全新 csv.writer
对象(您可能并不打算在每个循环中创建一个新的编写器)。如果你想写信给它,使用 the actual writerow
method. There is a lot of example code on the csv
docs page for reading and writing,你只需要将它们组合起来(并为每个使用不同的方言)。
您实际上并没有使用 csv.reader
,即使您使用了,您的输入文件也是 .xlsx
,它不是 CSV、竖线分隔符或其他任何东西,它比csv
无法读取的复杂数据格式(Office XML,并且它是一个 zip 文件,因此直接读取时看起来像二进制乱码)。
尝试使用正则表达式。
一行示例:
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)
您的文件名表示 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 在 "Data Wrangling with MongoDB"
中有一些不错的课程
我需要替换“|”进入选项卡,以便我可以分析我的人类注释基因组数据 (200+mb)。我是一名研究助理,正在学习如何 analyze/manipulate 以 easiest/simplest 的方式对数据进行排序,以便我可以在更多数据上复制它。
这是我的数据的样子。一个文件中大约有 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>
print w
只是打印您创建的全新 csv.writer
对象(您可能并不打算在每个循环中创建一个新的编写器)。如果你想写信给它,使用 the actual writerow
method. There is a lot of example code on the csv
docs page for reading and writing,你只需要将它们组合起来(并为每个使用不同的方言)。
您实际上并没有使用 csv.reader
,即使您使用了,您的输入文件也是 .xlsx
,它不是 CSV、竖线分隔符或其他任何东西,它比csv
无法读取的复杂数据格式(Office XML,并且它是一个 zip 文件,因此直接读取时看起来像二进制乱码)。
尝试使用正则表达式。 一行示例:
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)
您的文件名表示 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 在 "Data Wrangling with MongoDB"
中有一些不错的课程