[英]How to read this file using Python?
我有以下格式的DNA文件:
>gi|5524211|gb|AAD44166.1| cytochrome
ACCAGAGCGGCACAGCAGCGACATCAGCACTAGCACTAGCATCAGCATCAGCATCAGC
CTACATCATCACAGCAGCATCAGCATCGACATCAGCATCAGCATCAGCATCGACGACT
ACACCCCCCCCGGTGTGTGTGGGGGGTTAAAAATGATGAGTGATGAGTGAGTTGTGTG
CTACATCATCACAGCAGCATCAGCATCGACATCAGCATCAGCATCAGCATCGACGACT
TTCTATCATCATTCGGCGGGGGGATATATTATAGCGCGCGATTATTGCGCAGTCTACG
TCATCGACTACGATCAGCATCAGCATCAGCATCAGCATCGACTAGCATCAGCTACGAC
如何讀取此文件並提取DNA序列部分( ACCAGAGCGG...
),而無需任何換行符,例如:
ACCAGAGCGGCACAGCAGCGACATCAGCACTAGCACTAGCATCAGCATCAGCATCAGCCTACATCATCACAGCAGCATCA
也許不需要正則表達式?
如果總是只有一行標題:
dnalines = text.split('\n')[1:]
dna = ''.join(dnalines)
使用text =文件內容(例如, text = open('yourfile').read()
)
我做了一些測試,似乎以下內容比delroth的答案更有效:
text.split('\n', 1)[1].replace('\n', '')
編輯:等等,這不是那么簡單。 我在30MB的文件上使用Python 2.6.4和3.1.1對這兩種方法進行了兩次計時:
Python 2.6.4,我的版本:
$ python -m timeit -c "open('x').read().split('\\n', 1)[1].replace('\\n', '')" 10 loops, best of 3: 221 msec per loop $ python -m timeit -c "open('x').read().split('\\n', 1)[1].replace('\\n', '')" 10 loops, best of 3: 219 msec per loop
Python 2.6.4,delroth的版本:
$ python -m timeit -c "''.join(open('x').read().split('\\n')[1:])" 10 loops, best of 3: 392 msec per loop $ python -m timeit -c "''.join(open('x').read().split('\\n')[1:])" 10 loops, best of 3: 390 msec per loop
Python 3.1.1,我的版本:
$ python3 -m timeit -c "open('x').read().split('\\n', 1)[1].replace('\\n', '')" 10 loops, best of 3: 803 msec per loop $ python3 -m timeit -c "open('x').read().split('\\n', 1)[1].replace('\\n', '')" 10 loops, best of 3: 798 msec per loop
Python 3.1.1,delroth的版本:
$ python3 -m timeit -c "''.join(open('x').read().split('\\n')[1:])" 10 loops, best of 3: 610 msec per loop $ python3 -m timeit -c "''.join(open('x').read().split('\\n')[1:])" 10 loops, best of 3: 610 msec per loop
結論:Python 3中慢得多 ,而且它依賴於Python版本的兩段代碼的速度更快!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.