Ich möchte eine Zeichenfolge von ,
->
, =>
oder solche mit mehreren Räumen eingewickelt spalten, was bedeutet, dass ich zwei Punkte zu bekommen, she
und he
, aus den folgenden Zeichenfolgen nach geteilt wird:
"she he", "she he", "she he ", "she he ", "she->he", "she ->he", "she=>he", "she=> he", " she-> he ", " she => he \n"
Warum führt diese Regex zu vier Elementen?
I mit diesem haben versucht:
re.compile("(?<!^)((\\s*[-=]>\\s*)|[\\s+\t])(?!$\n)(?=[^\s])").split(' she -> he \n')
Was bekomme ich eine Liste mit vier Elemente: [' she', ' -> ', ' -> ', 'he \n']
.
Und dafür
re.compile("(?<!^)((\\s*[-=]>\\s*)|[\\s+\t])(?!$\n)(?=[^\s])").split('she he')
ich dieses: ['she', ' ', None, 'he']
.
Warum gibt es vier Elemente? Und wie kann ich nur zwei ohne die mittleren zwei bekommen?
'split' bewahrt den Inhalt Ihrer Einfanggruppen. Lass sie alle nicht erfassen. –
Können Sie einen string.strip() nicht ausführen, bevor Sie die Zeichenfolge an die pattern.split übergeben? Macht es ein bisschen sauberer. – sisanared
Versuchen Sie es mit 're.findall (...)': 're.findall ('\ w +'," sie -> er \ n ")' wird '['sie', 'er']'. – acw1668