known, unknown_args = parser.parse_known_args(...)
Как заметил в комментарии @ben w, как вы разбираете unknown_args
зависит от вас, например, со следующей грамматикой:
unknown_args = *(with_val / without_val) EOS
with_val = OPT 1*VALUE
without_val = OPT
OPT = <argument that starts with "--">
VALUE = <argument that doesn't start with "--">
Или как регулярное выражение:
(O V+ | O)* $
Примечание: в этом случае запрещенные значения запрещены.
d = {}
for arg in unknown_args:
if arg.startswith('--'): # O
opt = arg
d[opt] = []
else: # V
d[opt].append(arg) #NOTE: produces NameError if an orphan encountered
with_vals = {k: v for k, v in d.items() if v}
without_vals = [k for k, v in d.items() if not v]