2017-10-27 1 views
0

Ich möchte übersetzen diese mystring aufzuspalten = "0G15^GAC0T60T4^AA0C0" und die folgende Ausgabe mit Python erhalten:gsub Befehl von R in Python

['0','G','15','^GAC','T','60','T','4','^AA','C'] 

es mit diesem Befehl in R getan werden könnte:

mystring <- "0G15^GAC0T60T4^AA0C0" 
gsub("([\\^]*[ACGT]+)[0]*", " \\1 ", mystring) 

Wie kann ich das R-Skript in Python übersetzen?

Dank

Antwort

5

Sie Ihre vorhandenen regulären Ausdruck wiederverwenden können Pythons re Modul

import re 

mystring = "0G15^GAC0T60T4^AA0C0" 
l = re.sub("([\\^]*[ACGT]+)[0]*", " \\1 ", mystring).split() 

l ist dann

['0', 'G', '15', '^GAC', 'T', '60', 'T', '4', '^AA', 'C'] 
+0

Nizza regex Typ ... große Antwort! es ist ein Pluspunkt –

1

Sie können versuchen, diese mit:

mystring="0G15^GAC0T60T4^AA0C0" 
import re 
new_data = re.findall('(?<!\^[GAC])\d+|(?<!\^)\w|\^[a-zA-Z]+', mystring) 
final_data = [a for i, a in enumerate(new_data) if a != '0' or not new_data[i-1].startswith("^")][:-1] 

Ausgabe:

['0', 'G', '15', '^GAC', 'T', '60', 'T', '4', '^AA', 'C'] 
+0

die Ausgabe ist nicht das gleiche – NamAshena

+0

@NamAshena bitte meine letzten Bearbeitung. – Ajax1234