Można użyć shlex.split
, przydatny do analizowania podane ciągi:
>>> import shlex
>>> text = 'This is "a simple" test'
>>> shlex.split(text, posix=False)
['This', 'is', '"a simple"', 'test']
Robi to w nie POSIX-owych trybie uniemożliwia usunięcie wewnętrznych cytatami z wyniku podziału. posix
jest ustawiony na True
domyślnie:
>>> shlex.split(text)
['This', 'is', 'a simple', 'test']
Jeśli masz wiele wierszy tego rodzaju tekstu lub czytasz ze strumienia, można podzielić skutecznie (bez cudzysłowów w wyjściu) za pomocą csv.reader
:
import io
import csv
s = io.StringIO(text.decode('utf8')) # in-memory streaming
f = csv.reader(s, delimiter=' ', quotechar='"')
print list(f)
# [['This', 'is', 'a simple', 'test']]
Jeśli na Python 3, nie trzeba zdekodować ciąg Unicode, ponieważ wszystkie łańcuchy są już unicode.