Python在特定点上剪切字符串

时间:2017-03-16 09:58:41

标签: python string split

好的,我会解释我有什么需要做什么。

我有一个带有多个键的字典,但我会为这个例子给出一个字符串和一个由A,T,C和G组成的字符串。([3:]表示它应该在值的3个索引上分开)

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

现在我需要做的就是这个。我必须在字符串中查找值并将字符串拆分为dict键的值,最后得到一个包含拆分部分的列表,因此在这种情况下,它必须拆分为'TC'并取首先是C并将其拆分并最终得到:

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

我尝试使用split,但它丢失了'TC',我需要保留这些内容。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以使用正则表达式:

 sudo apt-get install g++

答案 2 :(得分:0)

import re
Dict = {'Testenzyme':'TC'}
String = 'AAATTTCCCGGGTCGGGAAA'
TestEnzyme = Dict['Testenzyme']
String.replace(TestEnzyme , re.sub(r'(\w)(\w)', r'\1:\2', TestEnzyme )).split(":")

应该做的工作