簡體   English   中英

在python中的字符周圍拆分字符串

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

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