2012-05-01 17 views
11

Używam wyrażeń regularnych do dzielenia ciągu za pomocą wielu ograniczników. Ale jeśli dwa z moich ograniczników występują obok siebie w ciągu znaków, umieszcza pusty ciąg w wynikowej liście. Na przykład:Dzielenie ciągu znaków z wieloma ogranicznikami w języku Python

re.split(',|;', "This,is;a,;string") 

Skutkuje

['This', 'is', 'a', '', 'string'] 

jest jakiś sposób, aby uniknąć '' na mojej liście bez dodawania ,; jako separatora?

Odpowiedz

30

Spróbuj tego:

import re 
re.split(r'[,;]+', 'This,is;a,;string') 
> ['This', 'is', 'a', 'string'] 
+0

Hmm, w porządku. A co, jeśli jeden z moich ograniczników był również słowem? Na przykład: 're.split (', |; | string'," This, is; a,; string ")' –

+2

Wtedy to zadziała: 're.split (r '[,;] + | string', 'This, is; a,; string') ' –

+1

Teraz wynik będzie następujący:" ['This', 'is', 'a', ',' '] ' –

Powiązane problemy