2016-03-31 14 views
2

Say bulunan bir dize AAAGCTTACGAAAAAAACGTA var ve ben ne olursa olsun dizede meydana geldiği, 4 A s oluşumu dahil sonra bir şey kaldırıp istiyoruz. Bu yüzden bu örnek için kırpmadan sonra AAAGCTTACG ile kalıyoruz. Bununla ilgili hızlı ve verimli bir yol ne olurdu? VarsaTrim dize

cevap

4

Sen str.split() kullanabilirsiniz: Çok güzel

>>> s = "AAAGCTTACGAAAAAAACGTA" 
>>> s.split("AAAA", 1)[0] 
'AAAGCTTACG' 
+0

. Ben bir Python uzmanı değilim, ancak bunun normal ifadeden daha hızlı olabileceğini hissediyorum. – sidyll

+1

Ayrıca "AAAA" içermediği durumda güzel çalışır. –

1

Sadece find olanlar AAAA ve dilim:

>>> s = "AAAGCTTACGAAAAAAACGTA" 
>>> s[:s.find("AAAA")] 
'AAAGCTTACG' 

Ancak, ilk dize AAAA içerip içermediğini kontrol etmelidir bu sayede aksi takdirde son karakteri uzakta dilim olacaktır.

4

Açgözlü bir eşleşme kullanabilir ve hiçbir şey ile değiştiremezsiniz. Bunu daha okunabilir bulursanız

import re 
new_string = re.sub(r'AAAA.*', '', original_string) 

Alternatif AAAA da A{4} olarak ifade edilebilir.