2013-06-04 5 views

Antwort

12

Wenn Ihr Muster ist einfach genug für einen (oder vielleicht zwei) replace, es verwenden :

mystr.replace('-', ' ').split(' ') 

Ansonsten verwenden Sie RE wie von @jamylak vorgeschlagen.

14
>>> import re 
>>> text = "You think we did this un-thinkingly?" 
>>> re.split(r'\s|-', text) 
['You', 'think', 'we', 'did', 'this', 'un', 'thinkingly?'] 

Als @larsmans stellte durch mehrere Räume aufgeteilt/Bindestriche (emuliert .split() ohne Argumente) verwendet [...] zur besseren Lesbarkeit:

>>> re.split(r'[\s-]+', text) 
['You', 'think', 'we', 'did', 'this', 'un', 'thinkingly?'] 

Ohne regex (regex die einfachste Option ist in diesem Fall):

>>> [y for x in text.split() for y in x.split('-')] 
['You', 'think', 'we', 'did', 'this', 'un', 'thinkingly?'] 

Eigentlich als auch die Antwort von @Elazar ohne regex ganz einfach ist (ich immer noch für Rege bürgen würde obwohl x)

+0

Ich denke, Regex sind besser für den allgemeinen Fall (jeder Bindestrich, sagen), wo 'ersetzen 'ist besser für einfachere Fälle. – Elazar

+0

Und ich schlage vor, Sie werden meine Antwort in Ihre einbetten, und ich werde es entfernen. So erhält der Leser ein vollständiges Bild. – Elazar

+0

@Elazar ja 'ersetzen 'könnte nach mehr als einem chaotisch werden, es funktioniert aber perfekt hier. Ich möchte deine Antwort nicht einbetten, du verdienst die Stimmen dafür – jamylak

1

Ein regex ist viel einfacher und besser, aber wenn man standhaft gegenüber ist, zu verwenden:

import itertools 

itertools.chain.from_iterable((i.split(" ") for i in myStr.split("-"))) 
Verwandte Themen