2017-03-16 79 views
1

好吧,我會解釋我有什麼需要做的。Python在某一點上切割一個字符串

我有一個帶有多個鍵的字典,但是我將給出一個這個例子和一個由A,T,C和G組成的字符串([3:]表示它應該在值)

Dict = {'EcoRV': 'GATATC'[3:]} 
String = 'AAAAGATATCAAAGATATCAAAA' 

現在,這是我需要做的。我必須查找字符串中的值並將該字符串拆分爲字典值的值,並最終得到一個包含其分割部分的列表,因此在這種情況下,它必須在'TC'上分割並採取第一個C和分裂,並結了:

List = ['AAAAGATA','TCAAAGATA','TCAAAA'] 

split嘗試過,但它失去了'TC',我需要保持這些。

+1

的可能的複製[在Python,我怎麼拆分一個字符串並保持分隔符?](http://stackoverflow.com/questions/2136556/in-python-how-do-i-split-a-string-and-keep-the-separators) – Pit

+1

@Pit我做沒有看到連接。 –

+0

那是什麼'[1]'在字典上做那個? –

回答

5

你見過分裂是如何工作的 - 你怎麼樣上添加一個任意字符,你不會在你想單獨字母之間的串查找和分裂:

test_str = 'AAATTTCCCGGGTCGGGAAA' 
print test_str.replace('TC', 'T:C').split(':') 

打印['AAATTT', 'CCCGGGT', 'CGGGAAA']

如果要使用字典進行進一步擴展,可以更改replace參數以使用帶字符串格式的字典值。例如:

temp_dict = {'Testenzyme': 'TC', 
      'Asongtoruinzine': 'GA'} 

test_str = 'AAATTTCCCGGGTCGGGAAA' 

out_dict = dict() 

for key, val in temp_dict.items(): 
    out_dict[key] = test_str.replace(val, '{}:{}'.format(val[0], val[1])).split(':') 

print out_dict 

打印{'Asongtoruinzine': ['AAATTTCCCGGGTCGGG', 'AAA'], 'Testenzyme': ['AAATTT', 'CCCGGGT', 'CGGGAAA']}

編輯:閱讀中,我看你要指定字符串在字典中的值拆分的意見。如果您將字典值作爲兩元素列表編寫,其中兩個元素表示要分割的字符串的不同部分,這會更容易。例如,然後你可以做到以下幾點:

temp_dict = {'Testenzyme': ['T', 'C'], 
      'Asongtoruinzine': ['GT', 'C']} 

test_str = 'AAATTTCCCGGGTCGGGAAA' 

out_dict = dict() 

for key, val in temp_dict.items(): 
    out_dict[key] = test_str.replace(''.join(val), ':'.join(val)).split(':') 

print out_dict 
0

您可以使用正則表達式:

enzyme= 'TC' 
String = 'AAATTTCCCGGGTCGGGAAA' 

import re 

#with re.split: 
print(list(filter(bool, re.split(r'(.*?{})(?={})'.format(enzyme[0], enzyme[1]), String)))) 

#alternative with re.findall: 
print(re.findall(r'.*?{}(?={})|.+$'.format(enzyme[0], enzyme[1]), String)) 
0
import re 
Dict = {'Testenzyme':'TC'} 
String = 'AAATTTCCCGGGTCGGGAAA' 
TestEnzyme = Dict['Testenzyme'] 
String.replace(TestEnzyme , re.sub(r'(\w)(\w)', r'\1:\2', TestEnzyme)).split(":") 

應該做的工作