import re mystring = '''-desc none -type used -cost med -color blue -desc none -msg This is a a message -name test -desc "(-type old -cost high)" -color green''' mydict = {} for line in mystring.splitlines(): key_value = re.findall(r'(-\w+)\s+("[^"]*"|.*?)(?=$|\s*-\w+\s)', line) print(key_value)
Standard input is empty
[('-desc', 'none'), ('-type', 'used'), ('-cost', 'med'), ('-color', 'blue')] [('-desc', 'none'), ('-msg', 'This is a a message'), ('-name', 'test')] [('-desc', '"(-type old -cost high)"'), ('-color', 'green')]