[英]Split a string around characters in python
大家好,我在這里看到了如何在指定字符處分割字符串的答案,這很簡單。 我需要知道的是如何在2個字符之間分割字符串
即,對以M開頭並以Z結尾的字符串進行拆分RERTCRPVNMVRNSRRTNSKSRSRHRZGRCRCGRHWVRNFDNPFISRYRRSZTSFFIFTVKFLSSYGLKKRKIKIKRTTVKVTVGQIMSSTNTLLNTZLN
進入RERTCRPVN MVRNSRRTNSKSRSRHRZ GRCRCGRHWVRNFDNPFISRYRRSZTSFFIFTVKFLSSYGLKKRKIKRTTVKVQGSTI MSLLNTZ LN
后來只保留那些想要的東西。
我可能可以形成某種怪異的循環來做到這一點
NET=Aminos.split('M')
LIST=[]
rock= int(0)
while LIST[rock]!= 'M' and LIST[rock]!= '':
LIST.append('M' + NET[rock])
rock=rock + 1
other=other+1
print(LIST)
但是在這個給定的例子中,我得到索引超出范圍錯誤。
這種事情似乎也很乏味,因為我必須在每個Z之后用分割符將LIST分開,然后嘗試將'Z'連接到每個Z的末尾。
有誰知道更有效地做到這一點的方法?
您可以使用正則表達式從字符串中提取所有以M開頭和Z結束的字符串:
>>> re.findall('M.*?Z', "RERTCRPVNMVRNSRRTNSKSRSRHRZGRCRCGRHWVRNFDNPFISRYRRSZTSFFIFTVKFLSSYGLKKRKIKRTTVKVQGSTIMSLLNTZLN")
['MVRNSRRTNSKSRSRHRZ', 'MSLLNTZ']
或者,如果您也想在字符串之間保持:
>>> re.split('(M.*?Z)', "RERTCRPVNMVRNSRRTNSKSRSRHRZGRCRCGRHWVRNFDNPFISRYRRSZTSFFIFTVKFLSSYGLKKRKIKRTTVKVQGSTIMSLLNTZLN")
['RERTCRPVN', 'MVRNSRRTNSKSRSRHRZ', 'GRCRCGRHWVRNFDNPFISRYRRSZTSFFIFTVKFLSSYGLKKRKIKRTTVKVQGSTI', 'MSLLNTZ', 'LN']
這聽起來像是re.split
東西:
即:
import re
ex = re.compile("M.*Z")
splitted = re.split(ex, <some input string>)
編輯:根據Tim Heap更新,因為我誤認為“以M開頭並以Z結尾”出現在單詞邊界。
編輯2:在@Cairnarvon的反饋之后,這是一個有效的示例(令人驚訝的是, re.split
不接受re.compile
的結果,您必須將正則表達式作為字符串傳遞:
>>> s = "RERTCRPVNMVRNSRRTNSKSRSRHRZGRCRCGRHWVRNFDNPFISRYRRSZTSFFIFTVKFLSSYGLKKRKIKRTTVKVQGSTIMSLLNTZLN"
>>> ex = re.compile("(M.*?Z)")
>>> re.split(s, ex)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/re.py", line 167, in split
return _compile(pattern, flags).split(string, maxsplit)
TypeError: expected string or buffer
>>> re.split("M.*Z", s)
['RERTCRPVN', 'LN']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.