2
shlex.split()を使用するとき、どのように "値をスペースで囲んで"引用符を保持できますか?shlex.splitを使用しているときに引用符を保持する
s = "SOME_VAR=\"value with spaces\" VAR2=value2"
shlex.split(s)
['SOME_VAR=value with spaces', 'VAR2=value2']
Pythonのツールのあなたの選択は最適ではないかもしれない
のshlexは実際のパーサーですので、あなたは、特殊文字をエスケープする必要があると思いますように思えます。たとえば、これは正しく解釈されます: '' SOME_VAR = \\\ "value \\ \\ spaces \\\" VAR2 = value2 "'。あなたがパーザを作り、shlexを再実装しなければならないので、私はあなたがこれらの文字をどうやってどうやってエスケープできるか正確にはわかりません... –
引用符を維持したいと思った理由は何ですか?値が元々引用されていたスペースを含んでいると仮定すれば十分でしょうか? – joeb
saltは、shlex.splitを使用して、msiexecへの呼び出しのパラメータを分割します。 https://github.com/saltstack/salt/blob/develop/salt/modules/win_pkg.py#L1132 値にスペースが含まれる場合があるmsiexecにキーと値のペアを提供しようとしています。 引用符が削除された場合、msiexecは最初のスペースの後のすべてをパラメータとして処理し、失敗します。 – lubyou