In Python, how do I split on either a space or a hyphen?
Input:
You think we did this un-thinkingly?
>>> import re
>>> text = "You think we did this un-thinkingly?"
>>> re.split(r'\s|-', text)
['You', 'think', 'we', 'did', 'this', 'un', 'thinkingly?']
As @larsmans noted, to split by multiple spaces/hyphens (emulating .split()
with no arguments) used [...]
for readability:
>>> re.split(r'[\s-]+', text)
['You', 'think', 'we', 'did', 'this', 'un', 'thinkingly?']
Without regex (regex is the most straightforward option in this case):
>>> [y for x in text.split() for y in x.split('-')]
['You', 'think', 'we', 'did', 'this', 'un', 'thinkingly?']
Actually the answer by @Elazar without regex is quite straightforward as well (I would still vouch for regex though)
If your pattern is simple enough for one (or maybe two) replace
, use it:
mystr.replace('-', ' ').split(' ')
Otherwise, use RE as suggested by @jamylak.
A regex is far easier and better, but if you're staunchly opposed to using one:
import itertools
itertools.chain.from_iterable((i.split(" ") for i in myStr.split("-")))