簡體   English   中英

如何使用Python讀取此文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM