あなたはclick
パッケージからsplit_arg_string
ヘルパー関数を使用することができます:「click
パッケージは構文解析し、コマンドの引数を支配し始めているが、私はドン
>>> print split_arg_string('"this is a test" 1 2 "1 \\" 2"')
['this is a test', '1', '2', '1 " 2']
:たとえば
import re
def split_arg_string(string):
"""Given an argument string this attempts to split it into small parts."""
rv = []
for match in re.finditer(r"('([^'\\]*(?:\\.[^'\\]*)*)'"
r'|"([^"\\]*(?:\\.[^"\\]*)*)"'
r'|\S+)\s*', string, re.S):
arg = match.group().strip()
if arg[:1] == arg[-1:] and arg[:1] in '"\'':
arg = arg[1:-1].encode('ascii', 'backslashreplace') \
.decode('unicode-escape')
try:
arg = type(string)(arg)
except UnicodeError:
pass
rv.append(arg)
return rv
それは文字列からの引数の解析をサポートしていると思う(argv
からのみ)。上記のヘルパー機能は、bash
完了時にのみ使用されます。
を編集してください:shlex.split()
を@ShadowRangerの回答として提案するだけで何もお勧めできません。私がこの回答を削除しないのは、少し速い分割を提供してから、shlex
で使用されている本格的なpure-pythonトークナイザ(上記の例では約3.5倍、5.9usと20.5us)があるからです。しかし、これはshlex
よりも好む理由ではありません。
'argparse.ArgumentParser.parse_args'の正確な出力内容 –
あなたが持っている特定の問題を示す完全なプログラムを表示する必要があります。 –