import re
split = re.findall(r"[\w']+|[.,!?;]", "How are you?")
print(split)
Ausgang:
['How', 'are', 'you', '?']
Ideone Demo
Regex101 Demo
Regex Erläuterung:
"[\w']+|[.,!?;]"
1st Alternative: [\w']+
[\w']+ match a single character present in the list below
Quantifier: + Between one and unlimited times, as many times as possible, giving back as needed [greedy]
\w match any word character [a-zA-Z0-9_]
' the literal character '
2nd Alternative: [.,!?;]
[.,!?;] match a single character present in the list below
.,!?; a single character in the list .,!?; literally
[Python kann nicht durch leere Zeichenfolge geteilt] (https://mail.python.org/pipermail/tutor/2003-August/024753 .html). –
Außerdem sollte es zurückgeben "[u'How", "du", "du", "du", "du", ""] –
@KennyLau Ja, richtig, aber das ist nicht so wichtig , Ich bin ok mit entweder Leerzeichen zurückgegeben oder ignoriert, da das Filtern ist trivial. – oarfish